2013-07-25 25 views
0

視圖控制器具有六個矩形視圖。在橫向模式下,我想安排他們3列和2行。但在肖像模式下,我想安排他們2列和3行。如何在iPad中自轉期間重新排列視圖

如何實現它時,iPad的橫向和縱向之間旋轉?

我需要有兩個筆尖文件:一個用於景觀帶3列2行和2列3行畫像orther和自轉過程中交換他們?

或者其他什麼東西?什麼是實施這個最好的方法?謝謝。

+0

我認爲這取決於你如何希望他們安排的具體細節。在橫向方向上,頂行可能有1,2和3,底行可能有4,5和6。但是當你順時針轉動設備_90度**時,_你會在上排有1和2,在中排有3和4,在下排有5和6?或者你會在上排有4和1,中排有5和2,底排有6和3? –

回答

1

你只需要1個筆尖文件。爲您的列/行創建IBOutlets,然後手動設置在:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; 

你會想請確保調用willRotateToInterfaceOrientation在viewWillAppear中也能確保您的列的起始位置/行正確時設置您以橫向模式進入視圖。

+0

爲了方便起見,您甚至可以將您未使用的方向(即人像)的alpha設置爲.5或.0,以便您可以輕鬆地在其他方向(風景)中看到移動的東西, – vzm

0

也許你想看看UICollectionView。它可能適合你。否則,你應該看看使用自動佈局。如果您使用兩個筆尖可以使用UIViewControllers方法,如

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation; 

另外,layoutSubviews被稱爲當設備旋轉,你可以執行任何操作那裏。 我認爲如果差異相當小,那麼你不應該需要使用兩個不同的Nib。

0

您可以使用2個xib來實現,或者如果您使用佈局約束,則可以在縱向模式下(在IB中)對其進行設置,然後在代碼中將這些約束保存到viewDidLoad中的數組中。在willAnimateRotationToInterfaceOrientation:duration:方法中,爲橫向定位創建新約束並將它們添加到超級視圖。看看我這個問題的答案,UIView to Ignore Orientation or Stick-To-Bottom Container對於我是如何做到這一點。例如,

相關問題