圆形拐角不显示正确
问题描述:
我有相等的间隔简单StackView在我的界面生成器:圆形拐角不显示正确
当运行该应用程序的按钮的位置和大小是正确的(与所示在Interface Builder),但是当我试图把按钮的角落,中间用下面的代码:
override func viewDidLoad() {
super.viewDidLoad()
let maskPath = UIBezierPath(roundedRect: button.bounds,
byRoundingCorners: [.bottomLeft,.bottomRight],
cornerRadii: CGSize(width: 10.0, height: 10.0))
let shape = CAShapeLayer()
shape.path = maskPath.cgPath
button.layer.mask = shape
}
我得到不正确的结果(按钮的文字不再居中,也不覆盖全宽):
问题在哪里?谢谢
答
您不应该在viewDidLoad()
中使用button.bounds
,因为此时视图的几何体未设置。尝试将代码移动到viewWillAppear()
或viewDidLayoutSubviews()
,其中边界将是正确的。
答
如果第一个答案仍不能解决您的问题,请在DispatchQueue.main.async {}
的viewWillAppear
或didAppear
中包装您的代码。
您是否尝试了解涵盖此视图的内容?你可以在运行时检查视图,请添加截图 –