【发布时间】:2017-05-06 16:41:03
【问题描述】:
这是我的 Button 类。
@IBDesignable
class Button: UIButton {
var cornerRadii = CGSize()
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
cornerRadii = CGSize(width: cornerRadius, height: cornerRadius)
}
}
@IBInspectable var color: UIColor = .green
override func draw(_ rect: CGRect) {
super.draw(rect)
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: cornerRadii)
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.layer.bounds
shapeLayer.path = path.cgPath
layer.mask = shapeLayer
color.setFill()
path.fill()
}
}
所以一切都很顺利。我的按钮有一个半圆形,所以实际上当我点击按钮框架的空角时,我不希望它被按下,但它确实发生了。我认为面具可以帮助我解决这个问题,但我没能做到。
那么,我如何创建一个带有两个不可点击的空角的按钮?
【问题讨论】:
-
尝试覆盖命中测试方法。在圈内时返回 nil,否则返回 super。
标签: ios swift button uibezierpath