添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1.画出不规则图形的 path

private func createPolygonPath() -> CGPath {
        let path = UIBezierPath()
        path.move(to: CGPoint(x: 100, y: 200))
        path.addLine(to: CGPoint(x: 100, y: 400))
        path.addLine(to: CGPoint(x: 300, y: 400))
        path.addLine(to: CGPoint(x: 100, y: 200))
        return path.cgPath

2.画出需要的layer:

private func createPolygonLayer() -> CALayer {
        let polygonLayer = CAShapeLayer()
        polygonLayer.fillColor = UIColor.purple.cgColor
        polygonLayer.lineWidth = 1.0
        polygonLayer.strokeColor = UIColor.red.cgColor
        polygonPath = createPolygonPath()
        polygonLayer.path = polygonPath!
        return polygonLayer

4.重写drawRect方法形成不规则图形

override func draw(_ rect: CGRect) {
        super.draw(rect)
        self.layer.mask = createPolygonLayer()

5.重写pointInside方法只允许区域内可响应

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return polygonPath.contains(point)

事件响应规则是调用hitTest方法找到合适的responder,此时view作为responer会调用pointInside检查自己是否合适。

分类:
iOS
标签: