2016-10-03 76 views
0

似乎有對斯威夫特3的XCode 8中的錯誤,UIBezierPath斯威夫特3和XCode的8:UIBezierPath文本字段錯誤

let myBounds = textField.bounds 

    let maskPath = UIBezierPath(roundedRect: myBounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 

    let maskLayer = CAShapeLayer() 
    maskLayer.frame = myBounds 
    maskLayer.path = maskPath.cgPath 

    self.textField.layer.mask = maskLayer 

    let frameLayer = CAShapeLayer() 
    frameLayer.frame = myBounds 
    frameLayer.path = maskPath.cgPath 
    frameLayer.strokeColor = UIColor(hexString: "#59a646").cgColor 
    frameLayer.fillColor = UIColor.white.cgColor 
    frameLayer.lineWidth = 1*2; 
    self.textField.layer.addSublayer(frameLayer) 

它用於生產類似這樣

enter image description here

但現在

enter image description here

任何解決方法?

+1

不要陳述「它產生不正確的結果」,請告訴我們它在做什麼以及你認爲它應該做什麼。也許包括一個屏幕截圖。 – rmaddy

+0

更新我的問題,@maddy謝謝 –

回答

0

這不太可能是一個錯誤,並且更可能會改變您的代碼不再適用的行爲。

這聽起來與cornerRadius「不再起作用」非常相似,因爲視圖的大小現在設置爲1000x1000。這可以通過在開始樣式之前調用視圖的layoutIfNeeded()來解決。首先,我會嘗試相同的解決方案。

然而,它看起來像是一個白色的矩形模糊了你貝塞爾路徑的一部分。嘗試將背景設置爲不同的顏色以確認。難道是你在那個視圖上設置cornerRadius,它不再按預期工作?

或者,嘗試將所有代碼移動到viewDidAppear階段。這可能不是一個永久的解決方案,因爲你會看到所有的東西,但它可能有助於理解正在發生的事情。

+0

我實際上嘗試在UIView而不是UITextField,它工作正常,給我正確的結果。我還檢查了一些Github代碼,看起來我的假設是正確的。 –