我的界面构建器中有一个间距相等的简单StackView:
当我运行应用程序时,按钮的位置和大小是正确的(完全如界面构建器中所示)但是当我尝试使用以下代码在中间的按钮的角落:
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
}
我得到的结果不正确(按钮的文字不再居中也不覆盖整个广场):
问题出在哪里?感谢
答案 0 :(得分:5)
您不应在button.bounds
中使用viewDidLoad()
,因为此时未设置视图的几何图形。尝试将代码移至viewWillAppear()
或viewDidLayoutSubviews()
,其中边界将是正确的。
答案 1 :(得分:1)
如果第一个答案仍然无法解决您的问题,请将您的代码包含在DispatchQueue.main.async {}
或viewWillAppear
中的didAppear
中。