簡體   English   中英

自定義UIView如何響應基於約束的框架更改

[英]Custom UIView How to Respond to Constraint-based frame changes

我有一個容器UIView,它的約束會導致其更改高度以匹配舊的3.5英寸iPhone或新的4英寸iPhone。 在該容器UIView中,我有一個自定義UIView的多個副本,我們將其稱為DynamicButton DynamicButton具有三個子視圖,這些子視圖使用其框架進行布局(無約束),並且每當調用[DynamicButton -setFrame]時,都會重新計算這三個子視圖的框架

設置了我的約束,以便我的DynamicButton視圖將以相等的高度填充整個容器視圖。

viewDidLoadviewWillAppear中,我的containerView的高度是它在情節viewWillAppear的高度(與設備無關)。 我的DynamicButton的高度為58像素。

viewDidAppear ,約束最終生效,並且當在舊的3.5英寸iPhone上顯示時,containerView的高度被減小為正確的值,而我的DynamicButton的高度為47像素。

但是,我的DynamicButton類更改大小時從不會收到setFrame消息。

我需要重寫哪種方法來攔截該大小變化,以便重新配置子視圖上的框架?

覆蓋DynamicButton layoutSubviews在那里設置子視圖的框架。

layoutSubviews的文檔中:

[...]子類可以根據需要重寫此方法,以對其子視圖執行更精確的布局。 僅當子視圖的自動調整大小和基於約束的行為沒有提供所需的行為時,才應覆蓋此方法。 您可以使用實現直接設置子視圖的框架矩形。 [...]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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