簡體   English   中英

sizeThat在視圖上有約束(框架布局視圖中的自動布局視圖)

[英]sizeThatFits on view with constraints (auto layout view inside frame layout view)

這不可能做到

通過在layoutSubviews中計算和設置框架,查看A的子視圖。

視圖B使用約束來布局它的子視圖。

視圖A包含許多View B實例。

視圖A在布局時需要知道子視圖的大小,因此它會調用sizeThatFits: on。

視圖B的高度取決於它的寬度。 在我的例子中,它內部有一個多行UILabel

B應該如何實現它的sizeThatFits:所以它返回正確的大小,同時將size參數傳遞給sizeThatFits:和帳戶中的約束?

到目前為止我嘗試/考慮的內容:

systemLayoutSizeFittingSize: - 不起作用,因為它沒有考慮傳遞給它的確切大小。 它不能用於指定精確的寬度,例如,當水平收縮時垂直生長的視圖。 它只提供最大壓縮尺寸或最大尺寸。

intrinsicContentSize - 據我所知,這可用於將信息傳遞自動布局。 我們想要的是 Auto Layout獲取信息。

到目前為止,這就是我的理由。 如果我犯了錯誤,請糾正我。 請幫助我,如果有人能指出我是如何完成的,我將非常感激!

編輯:此外,也許有一些完全不同的方式來做到這一點,甚至沒有使用sizeThatFits: 我唯一的要求是我可以在“外部”視圖(視圖A)中繼續使用框架布局,在“內部視圖”(視圖B)中繼續使用自動布局。

edit2:添加了一張圖片來說明我必須解決的確切情況

edit3:忘了提,我需要支持iOS 7.0

從圖中可以看出,UIStackView可能是View A的更好方法嗎?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/

然后用一個邊距約束,將View A UIStackView的底部偏移到最后一個View B的底部

我會使用Autolayout。 您仍然可以指定精確的大小和位置,只需使用約束而不是框架。

暫無
暫無

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

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