[英]How to bind properties of a UIView
我想將UIView框架與其轉角半徑綁定在一起,以使視圖的轉角半徑保持視圖寬度的1/2。 如果視圖框架發生更改,則會觸發其拐角半徑值
我希望可以為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並觀察視圖框架何時發生更改(如果需要,可以提供代碼,但是互聯網充滿了...)。
否則,您需要使用一些庫來進行反應式編程(反應式可可,RxSwift,Bond等)。
希望對您有所幫助。
您可以創建UIView的自定義子類,並按照@Volodymyr的建議覆蓋setFrame。 但是,這不適用於系統類。
您也可以在視圖控制器中實現viewDidLayoutSubviews
方法,並根據對視圖框架的任何更改來調整視圖的角半徑。
最后,您應該能夠在視圖框架上訂閱鍵值通知。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.