ios - 如何使 UIBezierPath 可选择

标签 ios swift

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()
}

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

谢谢!

最佳答案

您可以为自定义 View 创建一个Outlet,并在该自定义 View 中添加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 就会调用。您可以在该方法中更改标签文本。

有关更多信息,请参阅 THIS您可以在教程中找到如何检测贝塞尔曲线路径上的触摸。

关于ios - 如何使 UIBezierPath 可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32132677/

相关文章:

objective-c - 包标识符应该是小写字母还是驼峰字母?

ios - 我可以更改 NSLayoutConstraint 的 multiplier 属性吗?

ios - 将 'class variable' 分配给 'lazy var' 内的变量

ios - 如何使用 Charts ios 删除除左侧 Y 轴和底部 X 轴以外的所有网格线?

Swift 在静态方法中初始化 Self

ios - 如何将数据从搜索栏传递到 UILabel?

ios - 隐藏 UITableView 页脚

ios - 编辑时 reloadData 后 tableview 选择指示不会保留

ios - 如何使 View Controller 以部分透明度呈现?

ios - 如何自定义 InAppSettingsKit(背景颜色和导航栏颜色)?