iOS View 在方向改变时不会改变方向

Posted

技术标签:

【中文标题】iOS View 在方向改变时不会改变方向【英文标题】:iOS View does not change orientation on orientation change 【发布时间】:2015-12-27 23:56:07 【问题描述】:

我有一个根视图,其中包含一个包含(内容)视图的滚动视图。内容视图包含许多子控件。使用模拟器,当我改变方向时,包括滚动视图在内的所有视图都不会改变方向。例如,下图以纵向模式开始,并且所有控件都正确播放,但切换到横向模式只会水平显示纵向模式:

所有这些都是使用 Interface Builder 进行布局的,所以除了控件的一些 IB 出口外,我在控件视图文件中没有太多代码。

是否有某种约束阻止所有控件和视图重新定向?还是我总是必须在方向更改时手动布置这些?

【问题讨论】:

【参考方案1】:

首先,您需要通过勾选您想要的方向来检查您是否允许应用旋转:

点击左上角(显示项目导航器) 选择项目名称 查看 General->Deployment Info->Device Orientation 下的内容。 相应地调整复选框。

更新:

同时在模拟器上向上滑动并检查设备是否没有锁定旋转。

试着把它放在你的 AppDelegate/view 控制器中:

- (BOOL)shouldAutorotateToInterfaceOrientation:
  (UIInterfaceOrientation)interfaceOrientation

    return YES;

(我不认为这是一个约束/布局问题,因为状态栏甚至没有旋转)

【讨论】:

谢谢,乔!看起来在 Swift 2 中 shouldAutoRotateToInterface(...) 已被标记为不可用,但我确实尝试了 override func shouldAutorotate() -> Bool return true 并且成功了。 很好,很高兴能帮上忙。

以上是关于iOS View 在方向改变时不会改变方向的主要内容,如果未能解决你的问题,请参考以下文章

如何添加约束以使视图的尺寸在方向改变时不会改变?

IOS:动画 UICollectionViewCells 在改变方向时滑动

根据方向变化改变 CGRect 值

iOS 6 - 如何在方向改变时运行自定义代码

如何防止方向改变180度

self.view.frame.size 在同一方向改变值