2016-07-02 9 views
1

を使用してのUIViewの上部にコーナー半径を適用する方法:特定コーナーにコーナー半径を適用する)(Iラウンドを追加する<code>UIView</code>を拡張オートレイアウト

:私は、次の階層を持っている1つのビューコントローラで

extension UIView { 
    func round(corners: UIRectCorner, radius: CGFloat) -> CAShapeLayer { 
     let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(radius, radius)) 
     let mask = CAShapeLayer() 
     mask.path = path.CGPath 
     self.layer.mask = mask 

     return mask 
    } 
} 

  • StackView
    • のUIView
  • 012 0.
    私の問題は、私は(のみ)5.5インチの画面を実行したとき、私は適用されたときにそれがあるべきよう、UIViewのは、すべての方法を伸ばしていないですよう

制約は末尾の、主要な、トップのための両方に設定されています角の半径:

override func viewDidLayoutSubviews() { 
    self.greenview.round([.TopLeft, .TopRight], radius: CGFloat(10)) 
} 

この行を削除すると正しく動作します。この方法を適切な場所で呼んでいないのですか?ここで

は、問題のスクリーンショットです:

enter image description here

+0

「viewDidLayoutSubviews」の親実装を呼び出していないため、暗闇の中で撮影できますか?さらに、私は 'layoutSubviews'がこれのようなもののより良い場所になると思います。 – SArnab

+0

うん、layoutSubviewsでこれを行うと、問題が修正されました。あなたはこれを答えとして提供することができ、私はそれを受け入れます。 – Kobe

答えて

2

は、スーパーメソッドを呼び出した後に「layoutSubviews」でそれを入れてみてください。境界に依存するUIの変更に適しています。

関連する問題