2011-04-19 88 views
3

我需要一個視圖控制器(在ipad上)共享兩種模式,一種是縱向模式,另一種是橫向模式。實際上,我非常想模仿UISplitViewController的功能,但我希望能夠不使用頂級視圖控制器。除了HIG指南之外,我還有一個普遍問題,我認爲任何在方向之間切換觀點的人都會遇到。當在ios上旋轉時改變子視圖

1)爲了在視圖之間提供平滑過渡,我想在willRotateToInterfaceOrientation:duration內調用我的視圖更改(和動畫),而不是doRotateToInterfaceOrientation方法。問題是,在這個階段,視圖框和範圍尚未改變他們的新的,所以你最終不得不手動設置框,如:

subview.frame = CGRectMake(0,0,320,768); 

,而不是其他更好的,也許:

subview.frame = CGRectMake(0,0,320, self.view.frame.height); 

2)此外,即使您嘗試使用這些惡作劇,如果視圖自動調整其子視圖,您仍然無法獲得它。如果禁用子視圖的自動尺寸調整,那麼像這樣的東西,甚至不工作了:

subview.frame = self.view.frame; //because then you'd have to always specify the exact rect. 

沒有人有任何見解提供對此有何看法?

謝謝!

回答

5

請嘗試使用willAnimateRotationToInterfaceOrientation:duration:代替。另外,如果您在子視圖上正確設置了自動識別掩碼,則不需要關心主視圖是否已經調整過。只需調整子視圖的大小,使其適合主視圖內的大小,因爲它現在可以調整大小,並且只會起作用。

如果您沒有(或無法)正確設置自動調整掩碼,則應該已經擁有處理主視圖layoutSubviews方法中大小更改的代碼。所以再一次,你不應該在乎主視圖是否已經調整大小。

+0

真棒,willAnimateRotationToInterfaceOrientation工作! – Ying 2011-04-19 19:27:02

+0

順便說一下,自動調整掩碼不適用於我,因爲視圖基於方向被刪除並添加到屏幕上。然而,我會和他們一起做愛,看看它是否有效。 – Ying 2011-04-19 19:28:58

相關問題