在View控制器(Swift)中为UIButton类设置bool

时间:2015-06-01 15:52:56

标签: ios swift uibutton

我的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
}


}

2 个答案:

答案 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()