Xcode 8 GM破坏了我的UI

问题描述:

Argh。选择一个初始设备视图(6s)后,我的所有边界都完全搞砸了。我使用了下面的代码:Xcode 8 GM破坏了我的UI

func roundButtonLeft(button: UIButton) { 

    let path = UIBezierPath(roundedRect:button.bounds, byRoundingCorners:[.topLeft, .bottomLeft], cornerRadii: CGSize(width: 10, height: 10)) 
    let maskLayer = CAShapeLayer() 
    maskLayer.path = path.cgPath 

    let frameLayer = CAShapeLayer() 
    frameLayer.path = path.cgPath 
    frameLayer.lineWidth = 1.0 
    frameLayer.strokeColor = UIColor.white.cgColor 
    frameLayer.fillColor = nil 

    button.layer.addSublayer(frameLayer) 
    button.layer.mask = maskLayer} 

其中在我的UI按钮的一侧添加了边框。这现在不工作,白色边框从屏幕上射下。

如果我放弃我的更改,它可以正常工作,然后打开故事板并强制选择初始设备。

谁能帮助?现在我已经浪费了几个晚上了。

+1

是否正确定位了所有UI元素,如果您关闭添加的边框?我有一个观点,在更新到XCode 8之后,所有元素突然脱屏。约束被错误地实现 - 修复解决了问题。 – BJHStudios

+1

尽我所知,所有的UI元素都有正确的约束。如果我关闭边框,UI元素将保持它们应该在的位置。我应该补充一点,这只是在页面下方拍摄的边框。 UIElement是正确的大小和位置。 – LateNate

这花了很长时间才弄清楚。但它是用button.bounds做的。

我固定它通过添加:

button.layoutIfNeeded() 

添加子层之前。