2016-09-20 93 views
2

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

回答

0

這花了很長時間才弄清楚。但它是用button.bounds做的。

我固定它通過添加:

button.layoutIfNeeded() 

添加子層之前。