2016-07-07 17 views
0

我想綁定UIView框架和它的拐角半徑,所以 視圖的拐角半徑保持1/2的視圖的框架寬度。 如果視圖框改變它觸發它的角半徑值如何綁定UIView的屬性

我希望可以概括爲類的屬性之外的UIView

回答

1

的解決方案試試這個:

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 
} 
+0

他特別說,如果幀改變,他希望cornerRadius保持50%的寬度。這爲初始幀寬度提供了一個解決方案,但不是增加一個 – Emptyless

1

你需要重寫SETFRAME方法

- (void)setFrame:(CGRect)frame { 
    super.frame = frame; 
    self.layer.cornerRadius = /// 
} 

如果它不是你的看法,你可以使用KVC,如果需要的觀點幀之間的變化(當觀察可以提供代碼,但互聯網充滿了它......),而不是當它改變更新你的角落半徑。

否則,您需要使用一些庫進行反應式編程(Reactive Cocoa,RxSwift,Bond等)。

希望它對你有所幫助。

1

您可以創建一個UIView的自定義子類並覆蓋setFrame爲@Volodymyr建議。但這對系統類不起作用。

您也可以在您的視圖控制器中實現viewDidLayoutSubviews方法,並根據視圖框架的任何更改來調整視圖的角半徑。

最後,您應該能夠在視圖的框架上訂閱關鍵值通知。