Ошибка Specifi c RoundCorners на старых устройствах? - PullRequest
0 голосов
/ 29 февраля 2020

Я добавил расширение функции закругления углов внутри UIView

, оно отлично работает на новом устройстве, таком как iPhone XR, но старое устройство с соотношением сторон 16: 9, например iPhone 8, iPhone 8 plus, оно поворачивает только осталось

extension UIView{
    func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
        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
    }
}

Когда я реализую функцию. внутри UIViewController я вызываю функцию внутри viewDidLayoutSubviews

//ViewController
override func viewDidLayoutSubviews() {
    exampleView.roundCorners([.topRight,.topLeft], radius: 20)
}
  • , но когда я реализую в классе другой тип, я не могу найти решение, я хочу, чтобы метод заставил взять угол всегда.

1 Ответ

1 голос
/ 29 февраля 2020

Если вы хотите, чтобы у представления всегда был угловой луч, вы можете использовать следующий фрагмент:

@IBDesignable extension UIView{
@IBInspectable var cornerRadius : CGFloat{
    get{
        return self.layer.cornerRadius
    }set{
       layer.cornerRadius = newValue
        clipsToBounds = true
    }
  }
}

Вы можете установить радиус в InterfaceBuilder или в коде.

...