2017-10-17 195 views
0

我有相等的间隔简单StackView在我的界面生成器:圆形拐角不显示正确

enter image description here

当运行该应用程序的按钮的位置和大小是正确的(与所示在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 

} 

我得到不正确的结果(按钮的文字不再居中,也不覆盖全宽):

enter image description here

问题在哪里?谢谢

+2

您是否尝试了解涵盖此视图的内容?你可以在运行时检查视图,请添加截图 –

回答

3

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

0

如果第一个答案仍不能解决您的问题,请在DispatchQueue.main.async {}viewWillAppeardidAppear中包装您的代码。