UIViewフレームをその角の半径でバインドしたいので ビューの角の半径はビューのフレーム幅の1/2にとどまります。 ビューフレームは、その角の半径値UIViewのプロパティをバインドする方法
をトリガ変更した場合、私はUIViewの
UIViewフレームをその角の半径でバインドしたいので ビューの角の半径はビューのフレーム幅の1/2にとどまります。 ビューフレームは、その角の半径値UIViewのプロパティをバインドする方法
をトリガ変更した場合、私はUIViewの
を超えクラスのプロパティのために一般化することができる解決策を期待することは、この方法を試してください。
view.layer.cornerRadius = view.bounds.width * 0.5
はまた、二つの方法がいつでも呼ばれています範囲の変更:
viewWillLayoutSubviews()
とviewDidLayoutSubviews()
の場合、半径の値を変更することができます。
私は拡張子でこれを解決するだろう:
extension UIView {
func changeFrameAndCorner(frame: CGRect) {
self.frame = frame
self.layer.cornerRadius = view.bounds.width * 0.5
}
をあなたはsetFrameメソッド
- (void)setFrame:(CGRect)frame {
super.frame = frame;
self.layer.cornerRadius = ///
}
を書き換える必要があり、必要であれば、それはあなたのビューではない場合は、KVCを使用することができ、いつビューフレームの変更(観察することができます。コードを提供しますが、インターネットはそれでいっぱいです...)そして、それがコーナー半径を変更するときよりも。
それ以外の場合は、リアクティブプログラム(Reactive Cocoa、RxSwift、Bondなど)のライブラリを使用する必要があります。
あなたのお役に立てば幸いです。
UIViewのカスタムサブクラスを作成し、setFrameを@Volodymyrとしてオーバーライドできます。しかし、それはシステムクラスではうまくいかないでしょう。
ビューコントローラにviewDidLayoutSubviews
メソッドを実装し、ビューのフレームの変更に基づいてビューのコーナー半径を調整することもできます。
最後に、ビューのフレームでキー値の通知を購読できる必要があります。
彼は特に、フレームが変化すると、cornerRadiusが幅の50%のままになることを望んでいると言いました。これは、最初のフレーム幅に対して解決策を提供するが、増加するものではない – Emptyless