2016-10-03 12 views
0

でのTextFieldバグが、このスウィフト3とXcode 8:UIBezierPath

enter image description here

に似て生成するために使用 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) 

、スウィフト3とXcode 8上のバグがありますようです

しかし今や

enter image description here

どのような回避策ですか?

+1

"それは間違った結果を生み出しています"と述べるのではなく、実際に何をしているのか、何をすべきかを教えてください。スクリーンキャプチャが含まれている可能性があります。 – rmaddy

+0

私の質問が更新されました。@maddy thanks –

答えて

0

バグではなく、コードがもはや機能しなくなる可能性があります。

cornerRadiusは、設定した時点でビューのサイズが1000x1000になっているため、「動作しなくなった」と非常によく似ています。これは、スタイリングを開始する前にビューのlayoutIfNeeded()を呼び出すことで修正できます。まず、私は同じソリューションを試してみましょう。

しかし、ベジェパスの一部を隠す白い四角形があるように見えます。背景を別の色に設定して確認してください。そのビューにcornerRadiusを設定していて、それがもはや期待どおりに機能していない可能性がありますか?

または、すべてのコードをviewDidAppearステージに移動してみてください。これは、すべてのペイントが見えるので、永久的な解決策ではありませんが、何が起こっているのか理解するのに役立ちます。

+0

UITextFieldではなくUIViewで実際に試してみましたが、正常に動作しています。そして私はGithubコードをいくつか調べて、私の前提が正しいことを確かめました。 –

関連する問題