【问题标题】:Forcing A Change Of Orientation In Code强制改变代码方向
【发布时间】:2011-08-21 09:52:14
【问题描述】:

所以我有一个带有视图控制器的应用程序,它在旋转到横向时会改变视图。在这个视图中,用户可以点击 UIScrollView 中的大图像,这将推送一个新的视图控制器。但是,被推送的视图控制器不支持横向。

这是一个问题,因为当用户在第一个控制器中点击图像时,第二个控制器会加载并自动将仅纵向视图旋转到看起来很难看的横向模式。

所以问题是;即使用户将设备保持在横向位置,我如何(可能在 viewWillAppear 中)强制方向更改为纵向?我已经尝试过 [[UIApplication sharedApplication] setStatusBarOrientation:] 如其他地方所述,但没有任何乐趣。

【问题讨论】:

标签: iphone ios ipad orientation landscape-portrait


【解决方案1】:

支持仅纵向方向的推送导航控制器应实现此方法:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

将其设置为返回支持的方向,因此在本例中为:

return (interfaceOrientation == UIInterfaceOrientationPortrait); // and probably portrait upside-down, if it's on the iPad

【讨论】:

  • 不,这不起作用。这仅适用于后续的设备轮换。问题是手机已经处于横向状态,因此新视图被推送到横向中。不过,您的回答很有意义;我不知道为什么它不起作用...
  • 是否可以在其头文件中将推送的导航控制器更改为视图控制器?假设您已经在应用程序委托中设置了导航控制器,我不确定您为什么要推送导航控制器 - 这是图片库功能吗?还是扩展图像视图?
  • 对不起卢克,这是一个错字。它确实只是在推动一个 VIEW 控制器。
  • 好吧,你可以在 -(void)viewWillAppear 中调用其他 UIViewController 方法,例如 -(void)didRotateToInterfaceOrientation (使用 BOOL 标志来判断它是否是第一次调用新视图控制器,而不是在随后的轮换中)看看这是否有帮助。或者,在此处查看答案stackoverflow.com/questions/5023487/…。此外,在这一切之后,您需要提供更多关于如何设置导航控制器以及它是否支持任何方向的信息。
  • 嗨,卢克。非常感谢您抽出宝贵时间,但谷歌搜索得出了正确答案。如果其他人遇到同样的问题,我已将解决方案作为评论发布在问题下方。再次感谢卢克。
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 2011-03-31
相关资源
最近更新 更多