Rounded UIView using CALayers - only some corners - How?

后端 未结 14 1996
南方客
南方客 2020-11-22 13:53

In my application - there are four buttons named as follows:

  • Top - left
  • Bottom - left
  • Top - right
  • Bottom - right

Abov

14条回答
  •  南笙
    南笙 (楼主)
    2020-11-22 14:22

    CALayer extension with Swift 3+ syntax

    extension CALayer {
    
        func round(roundedRect rect: CGRect, byRoundingCorners corners: UIRectCorner, cornerRadii: CGSize) -> Void {
            let bp = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: cornerRadii)
            let sl = CAShapeLayer()
            sl.frame = self.bounds
            sl.path = bp.cgPath
            self.mask = sl
        }
    }
    

    It can be used like:

    let layer: CALayer = yourView.layer
    layer.round(roundedRect: yourView.bounds, byRoundingCorners: [.bottomLeft, .topLeft], cornerRadii: CGSize(width: 5, height: 5))
    

提交回复
热议问题