繁体   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