IOS Apps 开发(Swift)(6)——Implement a Custom Control(2)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。博主首发CSDN,mcf171专栏。

博客链接:mcf171的博客

原文链接:Implement a Custom Control

——————————————————————————————

在上一节文章中我们已经将资源添加到了我们的项目工程中,在这一节我们将让按钮显示这些图片

给按钮设置星星图片

1、打开RatingControl.swift

2、在 init?(coder:)初始化器中的for-in 循环前增加以下两行代码

let filledStarImage = UIImage(named: "filledStar")
let emptyStarImage = UIImage(named: "emptyStar")

3、在for-in 循环的按钮初始化之后增加下列代码

button.setImage(emptyStarImage, forState: .Normal)
button.setImage(filledStarImage, forState: .Selected)
button.setImage(filledStarImage, forState: [.Highlighted, .Selected])

上述代码为按钮的不同状态设置了不同的图片。当按钮没有出现的时候,显示的是空心星星,当选中的时候时候出现的是实心的星星。

4、删除颜色代码

button.backgroundColor = UIColor.redColor()

因为我们已经有了图片了,所以我们移除掉颜色代码

5、增加下述代码

button.adjustsImageWhenHighlighted = false

上述代码保证了当按钮状态改变的时候不显示一个额外的高亮效果

最终的初始化器代码为

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    
    let emptyStarImage = UIImage(named: "emptyStar")
    let filledStarImage = UIImage(named: "filledStar")
    
    for _ in 0..<5 {
        let button = UIButton()
        
        button.setImage(emptyStarImage, forState: .Normal)
        button.setImage(filledStarImage, forState: .Selected)
        button.setImage(filledStarImage, forState: [.Highlighted, .Selected])
        
        button.adjustsImageWhenHighlighted = false
        
        button.addTarget(self, action: "ratingButtonTapped:", forControlEvents: .TouchDown)
        ratingButtons += [button]
        addSubview(button)
    }
}

里程碑:运行app。我们将看到现在是星星图案而不是红色的按钮,点击任何一个按钮都会在控制台显示消息,但是按钮并没有切换图片


实现按钮行为

用户需要通过点击星星来进行打分,所以我们需要替换之前在ratingButtonTapped中写的代码

实现打分新闻

1、在RatingControl.swift中找到ratingButtonTapped方法

func ratingButtonTapped(button: UIButton) {
    print("Button pressed 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值