我试图让UIView topLeft和bottomLeft四舍五入,但由于某种原因,只有topLeft有边框半径。是什么导致这种情况?
这就是我在做什么:
我有扩展名:
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
}
}
我将它应用于这样的视图:
myView.roundCorners([.topLeft, .bottomLeft], radius: 10.0)
我在单元格中使用它,我也在使用自动布局。
目前它看起来像这样(绿色是我正在谈论的视图)但我希望bottomLeft也有角半径:
答案 0 :(得分:0)
问题在于你的时间安排。您的扩展程序依赖于self.bounds
。但是,如果您过早地调用此扩展程序(例如viewDidLoad
),那些bounds
尚未确定。您的视图按自动布局调整大小;这意味着在您的视图layoutSubviews
或视图控制器的viewDidLayoutSubviews
被调用之前,您没有界限。