我试图绘制一个圆形/椭圆形/椭圆形' iOS中的自定义UIView(使用swift)
我正在使用子类绘制UIView,如下所示
import Foundation
import UIKit
class CustomEllipse: UIView {
override func drawRect(rect: CGRect)
{
var ovalPath = UIBezierPath(ovalInRect: rect)
UIColor.grayColor().setFill()
ovalPath.fill()
}
}
这会产生类似于以下
的输出
我现在需要为此' CustomEllipse'定义可点击区域。
但是,当我为' CustomElipse'定义UITapGestureRecognizer时,默认情况下可以点击上面看到的黑角。
有没有办法让灰色椭圆可以点击?
答案 0 :(得分:1)
您可以通过覆盖pointInside(_: withEvent:)
方法自定义可点击区域。
默认情况下,该区域与bounds
矩形相同。
在这种情况下,您可以在UIBezierPath
中使用containsPoint()
方法。像这样:
class CustomEllipse: UIView {
var ovalPath:UIBezierPath?
override func drawRect(rect: CGRect) {
ovalPath = UIBezierPath(ovalInRect: rect)
UIColor.grayColor().setFill()
ovalPath!.fill()
}
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
return ovalPath?.containsPoint(point) == true
}
}