Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios can';未选中时,请不要更改按钮颜色_Ios_Swift_Uibutton - Fatal编程技术网

Ios can';未选中时,请不要更改按钮颜色

Ios can';未选中时,请不要更改按钮颜色,ios,swift,uibutton,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)

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

这是我的抽屉

   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;
            }
        }
    }
我有许多按钮,如您所见,我打印所选状态

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

我的问题是,未选择时颜色为白色,即使我在draw rect中说,如果未选择,则使用特定颜色

但是当我选择一个按钮使颜色变为白色时效果很好,正如你所看到的,但是为什么当我取消选择颜色时颜色不会改变呢

当用户单击按钮时,我在视图控制器中执行此操作

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

使用以下语句

 self.setTitleColor(UIColor(red: 166.0, green: 142.0, blue: 83.0, alpha: 1.0), forState: UIControlState.Normal)
 self.setTitleColor(UIColor(red: 255.0, green: 255.0, blue: 255.0, alpha: 1.0), forState: UIControlState.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)
    }

无需检查状态,它将根据其状态自动设置颜色

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

--

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


此外,可以将按钮下的该线渲染为按钮的纯色子视图。如果你这样做了,你也可以退休。

那不行,我还是有同样的问题,你能帮我吗please@elprup我加上它,仍然是一个不相关的观察,在Swift中,没有in
switch
语句。这里不需要中断。我很高兴在这个网站上看到你,你是世界上最好的。你能在我的新问题中找我吗?