簡體   English   中英

在設備旋轉時更改視圖控制器

[英]Change view controller on device rotation

我正在研究我的第一個Xcode項目,我想知道是否可以有2個視圖控制器,一個具有縱向視圖,第二個具有水平視圖。 有什么方法可以將這兩個視圖控制器連接起來,這樣當設備旋轉時,視圖會發生變化嗎?

在viewDidLoad中,將旋轉的視圖添加到superview,並使用對象向UIDeviceOrientationDidChangeNotification注冊觀察者:[UIDevice currentDevice]。 在選擇器上設置其框架。 然后旋轉新的旋轉視圖,並將舊視圖的alpha設置為0.0

- (void)deviceOrientationChangedNotification:(NSNotification *)notification 
{
     UIDevice *device = [notification object];
     UIDeviceOrientation orientation = device.orientation;

     if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) 
     {
        [rotatedView setTransform:CGAffineTransformMakeRotation(M_PI_2)];
        rotatedView.frame = [UIScreen mainScreen].bounds;
        oldView.alpha = 0.0;
     }
}

我不建議你這樣做,因為有一些直觀的UI控制器,蘋果設計用來管理應用程序的導航,你不能讓用戶猜測如何在你的應用程序中做一些任務,你必須向他們展示如何做到這一點。 所以,旋轉設備轉到另一個視圖控制器,如你所說:旋轉時我想要一個完全不同的視圖...不是一個好主意。

閱讀完整的iOS人機界面指南,了解推薦內容和不推薦內容:

iOS人機界面指南

特別是,閱讀: 適應性和布局

避免布局中的無端更改。 所有環境中的類似體驗都可讓人們在旋轉設備或在不同設備上運行應用時保持其使用模式。 例如,如果使用網格在水平常規環境中顯示圖像,則不必在水平緊湊的環境中的列表中顯示相同的信息,盡管您可以調整網格的尺寸。

暫無
暫無

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

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