我的UIButton有自定义类。在这个课程中,我有下面的代码来绘制按钮。我希望用户点击一个按钮并切换一个隐藏/未隐藏的部分。我不知道如何为此设置Bool值。感谢
import UIKit
class CheckboxChecked: UIButton {
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
func drawTicked(#showTick: Bool) {
//// Rectangle Drawing
let rectanglePath = UIBezierPath(roundedRect: CGRectMake(3, 3, 34, 34), cornerRadius: 10)
UIColor.darkGrayColor().setStroke()
rectanglePath.lineWidth = 3
rectanglePath.stroke()
if (showTick) {
//// Bezier Drawing
var bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPointMake(9.5, 19.5))
bezierPath.addLineToPoint(CGPointMake(18.5, 26.5))
bezierPath.addLineToPoint(CGPointMake(30.5, 10.5))
bezierPath.lineCapStyle = kCGLineCapRound;
bezierPath.lineJoinStyle = kCGLineJoinRound;
UIColor.darkGrayColor().setStroke()
bezierPath.lineWidth = 3
bezierPath.stroke()
}
}
override func drawRect(rect: CGRect) {
// Drawing code
}
}
答案 0 :(得分:0)
我建议您使用内部UIView
组件制作新的UIButton
- 以及您要隐藏的其他组件。
然后,您可以向控件的UIButton
部分添加一个单击处理程序,然后控制另一个组件的.visible
状态。事实上,你可以在游乐场中嘲笑它。
如果您想真正想到,可以查看@IBInspectible
查看有关自定义组件的帖子:https://www.weheartswift.com/make-awesome-ui-components-ios-8-using-swift-xcode-6/
答案 1 :(得分:0)
我设法通过使用下面的代码来实现这一目标。
我有一个UIButton
课程:
override func drawRect(rect: CGRect) {
// Drawing code
//// Rectangle Drawing
let rectanglePath = UIBezierPath(roundedRect: CGRectMake(3, 3, 34, 34), cornerRadius: 10)
UIColor.darkGrayColor().setStroke()
rectanglePath.lineWidth = 3
rectanglePath.stroke()
if (darwCheck == true) {
//// Bezier Drawing
var bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPointMake(9.5, 19.5))
bezierPath.addLineToPoint(CGPointMake(18.5, 26.5))
bezierPath.addLineToPoint(CGPointMake(30.5, 10.5))
bezierPath.lineCapStyle = kCGLineCapRound;
bezierPath.lineJoinStyle = kCGLineJoinRound;
UIColor.darkGrayColor().setStroke()
bezierPath.lineWidth = 3
bezierPath.stroke()
}
}
在ViewController
我有一个按钮,它改变了一个全局布尔变量,并重新绘制了按钮。
drawCheck = true
checkboxButton.setNeedsDisplay()