在设备旋转时更改视图控制器

时间:2015-02-05 16:06:14

标签: ios objective-c iphone xcode

我正在处理我的第一个Xcode项目,我想知道是否可以有2个视图控制器,一个具有纵向视图,第二个具有水平视图。有什么方法可以将这两个视图控制器连接起来,这样当设备旋转时,视图会改变吗?

2 个答案:

答案 0 :(得分:0)

在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;
     }
}

答案 1 :(得分:-1)

我建议你不要这样做,因为苹果设计了一些直观的UI控制器来管理应用程序的导航,你不能让用户猜测如何做某些任务在您的应用中,您必须向他们展示如何做到这一点。  所以,旋转设备转到另一个视图控制器,如你所说:旋转时我想要一个完全不同的视图......不是一个好主意。

阅读完整的iOS人机界面指南,了解推荐的内容以及不推荐的内容:

iOS Human Interface Guidelines

请特别阅读:Adaptivity and Layout

  

避免布局中的无意更改。所有环境中的类似体验都可让用户在旋转设备或在其他设备上运行应用时保持其使用模式。例如,如果使用网格在水平常规环境中显示图像,则不必在水平紧凑的环境中的列表中显示相同的信息,尽管您可以调整网格的尺寸。