簡體   English   中英

如何綁定UIView的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM