【问题标题】:Force portrait orientation on pushing new view to UINavigationViewController将新视图推送到 UINavigationViewController 时强制纵向
【发布时间】:2010-12-21 22:24:46
【问题描述】:

我有一个基于 TabBar 的应用程序,它仅支持一个特殊视图(UINaviagtionController 的根视图)的横向方向。现在我想为此导航控制器的所有其他视图强制纵向。 我试过用

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];

这很好用,但这段代码是一个私人 api 调用,我不能冒应用被拒绝的风险。

我也尝试过手动旋转下一个视图,但这只会旋转视图,而不是导航或标签栏。

是否有类似的方法来强制改变方向?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    目前没有办法做到这一点。 看看这个question,我也有同样的问题。使用标签栏应用程序,您必须让所有东西自动旋转,或者什么也没有。您可以找到让 shouldAutorotate 在每个视图上做出不同回答的方法,但实际上这不起作用。我不知道这是有意的行为还是错误,无论如何我知道的唯一可行的解​​决方案(不使用未记录的 API)是自己管理旋转,而不是依赖自动旋转。

    这意味着您需要启动方向通知(查看 UIDevice,有一些方法可以启动和停止有关设备方向的通知),然后为每个要旋转的视图注册为观察者,并手动管理方向,像这样(不记得我从哪里得到这个 sn-p):

    // Rotates the view.
    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
    self.view.transform = transform;
    

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2014-07-01
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多