UIView旋转问题

Posted

技术标签:

【中文标题】UIView旋转问题【英文标题】:UIView rotate problem 【发布时间】:2011-06-22 15:29:18 【问题描述】:

我的应用中有两个 UIViewController。我在它们之间切换视图。一个是隐藏的,另一个不是。除了方向问题,一切都很好。在两个 UIViewController 我重写了这个方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)||
        (interfaceOrientation == UIInterfaceOrientationLandscapeLeft));
    //return YES;
 

并在两个 Xib 文件中将方向设置为横向。

在 ***Delegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions    

   .......
   viewController.view.hidden=TRUE;

   [self.window addSubview:viewController.view];

   [self.window addSubview:menuController.view];

   .....

如果我添加 viewController.view 第一个 viewController.view 是横向位置,它可以旋转到 LandscapeLeft 或 LandscapeRight。但是 menuController.view 仍然是纵向位置,视图根本无法旋转。

如果我先添加 menuController.view,情况正好相反。

为什么会这样?如何解决这个问题?我的应用程序快完成了。有没有什么简单的方法可以在不对我的代码进行重大更改的情况下解决这个问题。

感谢任何建议。非常感谢!

【问题讨论】:

【参考方案1】:

哪个视图控制器被定义为 Window 的 rootViewController?当设备旋转时,AFAIK,被操纵的视图是rootViewController.view 的视图。

您可以在每个视图控制器的shouldAutorotateToInterfaceOrientation 中放置一个 NSLog 来检查这一点。如果我是对的,您只会看到对该函数的一次调用。

定义哪个视图控制器应该是根,并以模态方式呈现另一个,或者使用导航控制器。

希望对你有帮助!

【讨论】:

致:Gonzalo Larralde 非常感谢。我有点明白你在说什么。我的应用程序中没有定义 rootViewController。所以我尝试了你的方法。 menuController 被定义为 rootViewController 并且 viewController 被添加到 menuController.view 作为一个子视图。 menuController 显示为我所期望的,但是 viewController.view 只是变为空白。或者我应该将 viewController 作为实例添加到 menuController 类,而不是将两个控制器都添加到 Delegate。这样,我可能需要更改很多我不想要的代码。 它应该如何工作? menuController 和 viewController 应该同时可见吗?在这种情况下,指定哪些视图是主视图控制器,应该始终保持可见的视图控制器。在这种情况下,我将在保留给主视图控制器的 menuView 中定义一个视图/滚动视图,然后在 menuController 中定义和实例化 viewController 并将其添加到那里。 一次只能看到一个视图。我在委托中的代码 didFinishLaunchingWithOptions:....... viewController.view.hidden=TRUE;[self.window setRootViewController:menuController]; [self.window.rootViewController.view addSubview:viewController.view]; [self.window makeKeyAndVisible]; 切换视图时会改变隐藏属性 现在可以使用了吗?或者它显示 viewController.view 空白?您是否尝试过在 menuController 中实例化 viewController?

以上是关于UIView旋转问题的主要内容,如果未能解决你的问题,请参考以下文章

UIView旋转问题

屏幕旋转不同步时旋转 UIView

如何旋转 UIView?

使用触摸平滑旋转 UIView

使用核心动画和块旋转 UIView 对象的问题

旋转 UIView 导致它改变位置