【发布时间】:2015-11-18 22:28:36
【问题描述】:
我有很多自定义按钮,我想为选中和未选中状态设置颜色。
这是我的drawrect
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;
}
}
}
我有很多按钮,如您所见,我打印选定的状态。
结果总是错误的(如您将在屏幕截图中看到的那样)
我的问题是未选择时颜色为白色,即使我在绘图矩形中说如果不选择,则制作特定颜色
但是当我选择一个按钮时效果很好,所以颜色变成白色,正如你所看到的,但是为什么当我取消选择时颜色没有改变?
当用户点击按钮时,我在视图控制器中执行此操作
@IBAction func foodTabled(sender: PreferenceButton) {
sender.isThisButtonSelected = !sender.isThisButtonSelected
}
【问题讨论】:
-
@elprup 我加了还是一样
-
在不相关的观察中,在 Swift 中,
switch语句中没有 implicit fallthrough。这里不需要break。