2011-03-09 43 views
0

我在我的應用程序中有一個視圖,它有三個segmentedButtonControllers,我用縱向模式設計了它。當我旋轉屏幕時,整個用戶界面是......不對。在iPhone中縱向和橫向模式下保存我的應用程序的佈局

enter image description here enter image description here

我的問題是,我應該設計爲縱向和橫向模式分開?如果是這樣我怎麼做?

ps。其實我不需要爲iPhone的應用程序提供旋轉支持,但是我打算爲iPad製作同樣的應用程序,每個視圖都必須旋轉。謝謝。


編輯: 剛剛找到很好的例子 Easiest way to support multiple orientations? How do I load a custom NIB when the application is in Landscape?

回答

1

我強烈建議你查找文檔中的UIViewController類和閱讀這一切(假設您還沒有)。您需要的關鍵方法包括:willRotateToInterfaceOrientation:duration:,描述如下:

willRotateToInterfaceOrientation:duration: 就在用戶界面開始旋轉之前發送到視圖控制器。

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

參數toInterfaceOrientation用戶 接口 新的方向。 UIInterfaceOrientation中描述的可能值爲 。 duration待定 輪換的持續時間,以秒爲單位。 討論子類可能會覆蓋 此方法,以便在 旋轉之前立即執行其他 動作。例如,您可以使用此方法使用 禁用視圖 交互,停止媒體播放或 暫時關閉昂貴的圖紙 或實時更新。您也可以使用它 將當前視圖替換爲 反映新接口 方向的視圖。當此方法調用 時,interfaceOrientation 屬性仍包含視圖的原始方向 。

不管 是否調用此方法,無論您的代碼是執行一步還是執行一步或兩步循環。

可用性在以後的iOS 2.0和 可用。

聽起來好像你還應該包括:

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return NO; 
} 
+0

感謝您的建議。 – bicbac 2011-03-09 11:03:38

3

我會說這取決於內容。有時,只需在界面構建器的Inspector中正確設置UI元素的自動調整就足夠了,並且您可以獲得令人滿意的效果,但在某些情況下,僅調整視圖的大小並不能充分利用屏幕空間。舉例來說,只是將分段控件擴展爲全寬度,可能不會像將它們相鄰排列以使文本位於底部一樣好。

如果您要分別爲兩種模式進行設計,您可以將它們視爲不同的視圖,並相應地切換。很好的例子可以在iPhone Cookbook的第4章找到。什麼是作者並沒有切換視圖時遵循的方向變化:

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation 
{ 
    if ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
     || (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) 
     self.view = landscapeView; 
    else if ((interfaceOrientation == UIInterfaceOrientationPortrait) 
     || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)) 
     self.view = portraitView; 
    return YES; 
} 
+0

謝謝你的信息。 – bicbac 2011-03-09 11:04:22

+0

WillRotateToInterfaceOrientation中的代碼不會更好嗎? – BurninLeo 2013-03-07 10:12:15

0

你控制的autoresizingMask屬性正好被設置爲

UIViewAutoresizingFlexibleWidth 
0

我一直在尋找一個解決方案,並最終選擇了以編程方式設置佈局元素,如this文章中所述。

相關問題