iOS開發實現UIView隨着子控件的高度的變化而變化


例子

其實看完上面的敘述,你會思考,到底什么情況下,一個UIView需要只設置坐標不設置大小呢?
其實這種場景相當普遍。比如,我們常常會碰到,一個View中有兩個Label,兩個Label的高度均和內容有關,這時候,你的View的高度就必須由兩個Label的高度有關,而不能一開始就定死。例如。
一個已知寬度的UIView中,有兩個UILabel,我希望這個UIView的高度由兩個UIlabel的高度來確定。效果如下圖。

解決方法:

我們為這個紅色View設置了3個約束,分別是。

  • Leading space to SuperView:8
  • Trailing space to SuperView:8
  • Top Space to SuperView:8

也就是分別設置了View的左邊距,右邊距和上邊距,熟悉約束的人應該知道,這時候View的約束是不夠的。為什么?
因為,左邊距和上邊距確定了View的(x,y),然后左邊距和右邊距確定了這個View的寬度,我們缺少了Height。
但是這個Height,要由View內部的兩個label來確定,為了讓Xcode不再認為我們拉的約束有問題,再結合我們上面講的Intrinsic Content Size,我們可以在Xib的這個位置設置Intrinsic SizePlaceholder,這樣,Xcode就認為這個View有默認的大小,所以就不會報錯了。

為了label能夠多行顯示,別忘記設置lineofnumber為0.
還有一點需要注意的是,兩個UILabel之間肯定是需要一個設置一個垂直約束的,否則整個View就沒有辦法確定自己的高度,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM