ios - 未选中时无法更改按钮颜色

标签 ios swift uibutton

我有很多自定义按钮,我想为选中和未选中状态设置颜色。

这是我的抽屉

   override func drawRect(rect: CGRect) {
        print("status = \(self.selected)")
        if self.selected {
            self.titleLabel?.textColor = UIColor(red: 255.0, green: 255.0, blue: 255.0, alpha: 1.0)
        }else {
            self.titleLabel?.textColor = UIColor(red: 166.0, green: 142.0, blue: 83.0, alpha: 1.0)
        }

        let path = UIBezierPath()
        path.moveToPoint(CGPoint(x: self.bounds.minX, y: self.bounds.maxY))
        path.addLineToPoint(CGPoint(x: self.bounds.maxX, y: self.bounds.maxY))
        path.closePath()
//        path.addLineToPoint(center)
        UIColor.blackColor().setStroke()
        path.lineWidth = 3.0
        path.stroke()
    }

   private var isSelectedValue = false
    var isThisButtonSelected : Bool {
        get {
            return isSelectedValue
        }
        set {
            isSelectedValue = newValue
            selected = newValue
            switch newValue {
            case true:

                self.selected = true
                rightImageView?.image = UIImage(named: "selection-preferences")
                break;
            case false:
                self.selected = false

                rightImageView?.image = nil
                break;
            }
        }
    }

我有很多按钮,如你所见,我打印了选定的状态。

结果总是错误的(正如您将在屏幕截图中看到的)

我的问题是,即使我在绘制矩形中说如果不选择,则制作特定颜色,但未选择时颜色为白色

enter image description here

但是当我选择一个按钮时效果很好,所以颜色变成白色,如您所见,但为什么当我取消选择时颜色没有改变?

enter image description here

当用户点击按钮时,我在我的 View Controller 中执行此操作

 @IBAction func foodTabled(sender: PreferenceButton) {
        sender.isThisButtonSelected = !sender.isThisButtonSelected
    }

最佳答案

与 alpha 一样,UIColor 的红/绿/蓝值介于 0.0 和 1.0 之间。您必须将您的值除以 255.0。

--

除了 setTitleColor:forState: 之外,您还可以使用 setBackgroundImage:forState: 来控制附加图像的存在与否(尽管您需要重构该图像覆盖整个背景)。通过明智地使用这两种方法,您可能可以完全简化此按钮类,停用 isSelectedValue 并仅使用现有的 selected 属性。

此外,您可以将按钮下方的那条线呈现为按钮的纯色 subview 。如果这样做,您也可以退出 drawRect

关于ios - 未选中时无法更改按钮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791680/

相关文章:

ios - 删除文件 :///prefix from URL path

android - PhoneGap/ Cordova : Shake Event detection not smooth

ios - 如何在 Main.storyboard 中引用的不同 Storyboard中为导航 Controller 设置选项卡栏图标和标题?

ios - 查找传递给函数的泛型类型

iphone - 为什么将按钮添加为 subview 时会出现内存泄漏?

ios - 在调用另一个引用 self 的方法的 block 内调用一个方法会导致保留周期吗?

ios - iOS 10.3 中的备用图标

ios - 核心数据组取决于属性?

ios - 获取 UIButton 的 UITableViewCell?

ios - 选择时在UIButton上添加/删除下划线