我扩展了UIView
,添加了一个round()方法,以应用圆角半径到特定的角落:
extension UIView {
func round(corners: UIRectCorner, radius: CGFloat) -> CAShapeLayer {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(radius, radius))
let mask = CAShapeLayer()
mask.path = path.CGPath
self.layer.mask = mask
return mask
}
}
在一个视图控制器中我有以下层次结构:
- StackView
- UIView
上下左右的约束都设置为0。
我的问题是当我只使用5.5英寸的屏幕时,应用圆角后UIView没有完全延伸到应该达到的位置:
override func viewDidLayoutSubviews() {
self.greenview.round([.TopLeft, .TopRight], radius: CGFloat(10))
}
如果我删除这行代码,它就可以正常工作。难道我没有在正确的位置调用该方法吗?
以下是问题的屏幕截图:
![enter image description here](https://istack.dev59.com/IO5On.webp)
viewDidLayoutSubviews
的父类实现。另外,我认为在layoutSubviews
方法中处理这样的事情可能更合适。 - SArnab