我有一個xib文件,用自動佈局表示一個簡單的視圖,我用[[NSBundle mainBundle] loadNibNamed:@"name"][0]
實例化並添加到編程式創建的UIView
,通過addSubview:
。嵌入編程式UIView的自動佈局XIB不會調整到父
問題是視圖不能伸展以滿足嵌入視圖的大小;相反,它似乎是默認的xib文件中指定的大小。 (我也找不到在xib文件中僅限其子視圖的容器視圖本身的約束條件)
也有點奇怪,當我旋轉iPad時,視圖的寬度會進一步按比例縮小。所以它顯然是以某種方式連接起來的,但是具有錯誤的初始值。
我錯過了什麼連接以使該嵌入式視圖適合視圖層次結構?
截圖(增加了調試品紅色):
旋轉爲縱向後:
感謝您的幫助。這太糟糕了,Xcode不允許在界面構建器中爲此設置約束。通常我喜歡在代碼中做事,但自動佈局絕對不是這些事情之一。 ;)我最終安裝了** PureLayout **庫(https://github.com/smileyborg/PureLayout),其'autoPinEdgesToSuperviewEdgesWithInsets'方法運行良好。乾杯! – devios1 2014-10-07 17:29:40
不客氣。約束涉及兩種觀點。在NIB的視圖中,超視圖不存在,因此沒有任何與約束有關的內容。此外,約束條件必須添加到超級視圖中,而不是添加到NIB中的視圖。最後,視圖NIB的一個重要用例是可用於各種上下文的視圖。這個觀點並不適合以任意的方式來規定它與周圍環境的關係。這是加載它並將其添加到另一個視圖層次結構中的控制器的工作。 – 2014-10-08 00:57:16
我不知道3年是否改變了這一點,但是當你說「在視圖NIB中,超視圖不存在」時,我想:但是在故事板中,該類的視圖已放置在場景中,那裏應該有足夠的信息來確定超級觀點。恕我直言,國際局應該只是處理。除非我錯過了一些東西,Xcode人只是聳聳肩,說我們不值得花時間來增加這個功能。 – 2017-11-27 23:47:23