簡體   English   中英

Xcode IB故事板方向和容器視圖

[英]Xcode IB Storyboards orientation and container views

在IOS 6 iPad應用程序中,我有一個具有多個容器視圖的容器視圖控制器。 目前,我已將我的應用鎖定為橫向並且可以正常使用,但我也想支持縱向。 一切都是通過“界面”構建器使用自動布局和約束來設置的。 如果可能的話,我想保持一個故事板的一致性,可維護性等。

布局是這樣的:頁眉,左側菜單,兩個內容窗格(在橫向上並排放置)和一個腳窗格,除內容外,我所有窗格的大小都進行了調整。 當從橫向旋轉到縱向時,我希望一個內容窗格在另一個窗格下方滑動(當前,它從屏幕上吹走),並且兩者都粘附在容器視圖的邊緣。

在HTML5 / CSS3中,這很容易做到,但是我陷於IB,任何幫助/想法都很棒!

謝謝!

編輯:

解決方案-

按照@Charles A.的建議,我將NSLayoutConstraints鏈接到IBOutlets,並在代碼中操縱了間距/優先級。 我真正掙扎的地方是使用高度和寬度約束。 如果您移動了任何內容,Interface Builder將使用Leading / trailing和Top / Bottom約束刪除或覆蓋它們。 我終於屈服了,擺脫了所有的高度和寬度限制,只使用了前導/尾隨/頂部/底部。

我發現了兩件事:約束具有里程碑(例如,優先級為750),因此,如果您將優先級從749務實地更改為750,您將獲得:

 Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported. 

但是,如果您從750更改為800,就可以了。

另外,在處理約束之后,我需要調用:

[self updateViewConstraints]

我發現了一篇建議[parent updateViewConstraints]的帖子,該帖子不起作用,而上面的一個起作用了!

無論如何,我希望這對這個地方的其他人有所幫助,因為那里沒有太多東西。

在不知道如何設置布局約束來處理兩個內容視圖的情況下,很難專門回答這個問題。 話雖如此,我可能會通過使自己的布局受到類似於此約束的方式來使用此UI(我將使用視覺格式進行描述,在這種情況下,我假設超級視圖是兩個內容視圖的父視圖):

|-[contentViewOne]-0-[contentViewTwo(==contentViewOne)]-|

如果按上述條件在情節NSLayoutConstraint*中設置了約束,則可以創建NSLayoutConstraint*類型的IBOutlet並將其連接到兩個內容視圖之間的水平空間約束(在上面的示例中,該常量視圖的常數值為0)。 從橫向到縱向設置動畫時,只需將其恆定值設置為contentViewOne的負寬度即可。 這應該具有預期的效果。 從縱向旋轉到橫向旋轉時,顯然還必須將其設置為0。

值得注意的是,我假設您的內容視圖寬度相等。 如果不是這樣,則可能還需要為滑動下方的那一面設置寬度限制的出口,以便暫時將其設置為與覆蓋它的那一面相同的寬度。

有許多潛在的方法可以使用自動布局解決此布局。 我上面描述的只是這樣一種方式。 取決於您已經擁有的布局,這才有意義。

暫無
暫無

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

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