Я пытаюсь скруглить верхний и левый углы, но знаю, как это сделать для iOS 11+ (из-за самой простой новой функции), но не могу этого сделать для iOS 9-, было бы здорово, если бы вы, ребята, могли мне с этим помочь :) Вот ...

0
Aviav Sabag 18 Мар 2021 в 12:47

2 ответа

Лучший ответ

Сделайте расширение UIView и добавьте в него следующий метод:

extension UIView {
    
    func roundCorners(corners: UIRectCorner, radius: CGFloat) {
        DispatchQueue.main.async {
            let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
            let mask = CAShapeLayer()
            mask.frame = self.bounds
            mask.path = path.cgPath
            self.layer.mask = mask
        }
    }
}

А затем вы можете закруглить радиус углов любых ракурсов с любых сторон. Пример:

anyView.roundCorners(corners: [.topRight, .bottomLeft, .bottomRight], radius: 20)

Примечание. Не забудьте установить для свойства clipsToBounds представления значение true, прежде чем использовать этот метод. Удачного кодирования :)

1
Shivani Bajaj 18 Мар 2021 в 10:24

Напишите этот метод и поместите его там, где вам нужно, например в viewDidLoad:

private let cornerRadius: CGFloat = 10
private func setMaskLayers() {
        if #available(iOS 11.0, *) {
        yourView.clipsToBounds = true
        yourView.layer.cornerRadius = cornerRadius
        yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    } else {
    let path = UIBezierPath(roundedRect: yourView.bounds, byRoundingCorners: [.topRight, .topLeft], cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
    let maskLayer = CAShapeLayer()
    maskLayer.path = path.cgPath
    yourView.layer.mask = maskLayer
    } 
}
1
Timothy Stokarski 18 Мар 2021 в 09:54