2016-09-16 8 views
0

XCode 8、Swift 3、およびiOS10の最近のアップデートでは、UIViewの四捨五入パターンが廃止されました。私は何を使用していた:UIViewの丸めに適したパターン?

setRoundが拡張として定義されて
@IBOutlet weak var pointsView: UIView! { 
    didSet { 
     pointsView.setRound() 
    } 
} 

extension UIView { 
    func setRound() { 
     self.layer.cornerRadius = self.bounds.width/2 
    } 
} 

今、彼らは正しい境界を持つ前に、コンセントがセットされますように私はもうこのパターンを使用することはできません。ほとんどの場合、bounds.width/2は実際のbounds.widthよりも大きく、ビューは消えます。

丸み付けが定義されていてUIViewが設定され、他のレイヤーベースのスタイリングもすべて行われていたので、このスタイルは本当に楽しかったです。

ここで、丸めを行う方法は何ですか?なぜあなたはあなたのやり方でそれをしていますか?

+0

「ユーザー定義の実行時属性」のIDインスペクタで属性を追加できます。キーパスを "layer.cornerRadius"に設定し、その値を目的のコーナーに設定します。 –

+0

ビューのサイズを変更するたびに値を変更する必要があるため、定義したくありません。 – dorjeozer

答えて

1

setRoundの機能をviewDidLayoutSubviewsから呼び出すか、またはレイアウトを行った後に短いです。または、あなたのビューのwidth constraintのコンセントを取って、角の半径をコンセントのコンセントのconstantの半分に設定してください。

+0

私が今(バンドエイドとして)やっていることは、viewDidLayoutSubviewsと同じであると思われるviewDidAppearの関数を呼び出すことです。制約があれば動作するかもしれませんが、再度ロジックを変更するための余分なコードと手間がかかります。 – dorjeozer

+0

実際、viewDidLayoutSubviewsはviewDidAppearよりもはるかに優れているようです。ありがとう!しかし、これを行うにはよりエレガントな方法を理解する必要があります。 – dorjeozer

+0

yeah 'viewDidLayoutSubviews'は' viewDidAppear'よりも優れています!! – Lion

関連する問題