Просто создайте пользовательский вид, как показано ниже, и примените маску и путь к основному слою
@IBDesignable class VariableSeparateCornerView: UIView {
private var corners: UIRectCorner = [.allCorners]
private var radius: CGFloat = 0
override func layoutSubviews() {
super.layoutSubviews()
self.refreshCorners()
}
func roundCorners(corners: UIRectCorner, radius: CGFloat) {
self.corners = corners
self.radius = radius
self.refreshCorners()
}
private func refreshCorners() {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
}
Использование:
let containerView = VariableSeparateCornerView()
containerView.roundCorners(corners: [.topRight, .bottomLeft, .bottomRight], radius: 20)