StackView内的圆角无法正确显示

时间:2017-10-17 11:00:37

标签: ios objective-c swift interface-builder

我的界面构建器中有一个间距相等的简单StackView:

enter image description here

当我运行应用程序时,按钮的位置和大小是正确的(完全如界面构建器中所示)但是当我尝试使用以下代码在中间的按钮的角落:

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

}

我得到的结果不正确(按钮的文字不再居中也不覆盖整个广场):

enter image description here

问题出在哪里?感谢

2 个答案:

答案 0 :(得分:5)

您不应在button.bounds中使用viewDidLoad(),因为此时未设置视图的几何图形。尝试将代码移至viewWillAppear()viewDidLayoutSubviews(),其中边界将是正确的。

答案 1 :(得分:1)

如果第一个答案仍然无法解决您的问题,请将您的代码包含在DispatchQueue.main.async {}viewWillAppear中的didAppear中。