如何使UIBezierPath可选

时间:2015-08-21 05:04:33

标签: ios swift

Hello StackOverFlow社区,

我有一个标准的UIBezierPath如下:

let π:CGFloat = CGFloat(M_PI)

override func drawRect(rect: CGRect){

    let center = CGPoint(x:bounds.width/2, y: bounds.height/2)
    let radius: CGFloat = max(self.bounds.width, self.bounds.height) - 60
    let arcWidth: CGFloat = 40

    var startAngle: CGFloat = 0
    var endAngle: CGFloat = (2 * π)      
    var path = UIBezierPath(arcCenter: center,
            radius: radius/2 - arcWidth/2,
            startAngle: startAngle,
            endAngle: endAngle,
            clockwise: true)

   path.lineWidth = arcWidth
   UIColor.redColor().setStroke()
   path.stroke()
}

这会产生一个非常简单的弧。很简单,我希望能够在应用程序运行时选择/按下此弧(如按钮),并能够触发操作。有什么办法可以做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以为自定义视图创建Outlet,并在该自定义视图中添加tapgesture,如下所示:

import UIKit

class ViewController: UIViewController {


    @IBOutlet weak var arcView: customView!

    override func viewDidLoad() {
        super.viewDidLoad()
        var tapGesture = UITapGestureRecognizer(target: self, action: "SomeMethod")
        self.arcView.addGestureRecognizer(tapGesture)
    }

    func SomeMethod(){

        //change label text
    }
}

现在,当您点击arcView SomeMethod时,Bezier Paths会打电话。您可以使用该方法更改标签文字。

有关详细信息,请参阅THIS教程,了解如何检测data-time上的触摸。