I don't understand why everyone writes extensions
to UIView
? After all, other developers will look for corner radius
in CALayer
. Add extension
to the correct classes, otherwise other team members will never see it ((.
import UIKit
extension CALayer {
func corner(radius: CGFloat, corners: UIRectCorner = .allCorners) {
if #available(iOS 11.0, *) {
masksToBounds = true
cornerRadius = radius
maskedCorners = corners.caCornerMask
} else {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
mask = shapeLayer
setNeedsDisplay()
}
}
}
extension UIRectCorner {
/// convert UIRectCorner to CACornerMask
var caCornerMask: CACornerMask {
var cornersMask = CACornerMask()
if self.contains(.topLeft) {
cornersMask.insert(.layerMinXMinYCorner)
}
if self.contains(.topRight) {
cornersMask.insert(.layerMaxXMinYCorner)
}
if self.contains(.bottomLeft) {
cornersMask.insert(.layerMinXMaxYCorner)
}
if self.contains(.bottomRight) {
cornersMask.insert(.layerMaxXMaxYCorner)
}
return cornersMask
}
}
use like this
youView.layer.corner(radius: 20, corners: [.topLeft, .bottomLeft, .bottomRight])
SWIFT
will suggest this method after typing youView.layer.corner
and other team members will see it.