Ios 旧设备上特定于错误的圆角?

Ios 旧设备上特定于错误的圆角?,ios,swift,xcode,rounded-corners,Ios,Swift,Xcode,Rounded Corners,我在UIView中添加了圆角函数扩展 它在像iPhoneXR这样的新设备上工作得非常好,但在像iPhone8这样的16:9比例的旧设备上,iPhone8加上它就在左边 extension UIView{ func roundCorners(_ corners: UIRectCorner, radius: CGFloat) { let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corne

我在UIView中添加了圆角函数扩展

它在像iPhoneXR这样的新设备上工作得非常好,但在像iPhone8这样的16:9比例的旧设备上,iPhone8加上它就在左边

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中的函数

但当我在课堂上用另一种类型实现时,我找不到解决方案, 我想要一种方法来迫使你永远走到拐角处。
如果希望视图始终具有cornerradius,可以使用以下代码段:

@IBDesignable extension UIView{
@IBInspectable var cornerRadius : CGFloat{
    get{
        return self.layer.cornerRadius
    }set{
       layer.cornerRadius = newValue
        clipsToBounds = true
    }
  }
}
您可以在InterfaceBuilder或代码中设置半径

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