在 UIScrollView 中旋转 UIViewControllers

Posted

技术标签:

【中文标题】在 UIScrollView 中旋转 UIViewControllers【英文标题】:Rotate UIViewControllers in UIScrollView 【发布时间】:2012-08-13 16:36:41 【问题描述】:

我有 UIViewControllerUIScrollViewUIScrollView 包含多个 UIViewControllers(类似于 PageControl Apple 示例)。UIScrollView 中的每个内部UIViewController 都能够处理UIInterfaceOrientation 的更改并重新绘制它的视图。 但是当UIViewControllersUIScrollView 中时,旋转事件永远不会到达内部UIViewControllers

如何让这些内部 UIViewController 处理旋转事件? 提前致谢。

【问题讨论】:

【参考方案1】:

只有 viewController 结构(如 tabbarcontroller 或 navigationcontroller)中的 viewController 获取(并处理)旋转事件。如果您只是添加了一些 viewController 的视图,它们实际上不会旋转,但它们会根据主视图的新大小相应地更改其帧大小。一般来说,您应该在每个视图上使用 autoresizingMasks。在文档中阅读它们。

但在 scrollView 中可能没有自动布局。您可以在主视图中覆盖 layoutSubviews: 以处理基于 scrollView 框架的所有 scrollView 子视图的布局。

【讨论】:

【参考方案2】:

也许您可以检测设备何时旋转,然后使用transform 属性以编程方式使用CGAffineTransformMakeRotation(-M_PI_2) 应用必要的旋转,例如...

【讨论】:

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

具有自动布局和设备旋转的 UIScrollView

当设备旋转时,如何为视图设置正确的边界?

在 UIScrollView 中拖动一个 UIView

在 UIScrollView (Swift) 中使用动态内容调整 UiView 高度

是否可以在 UIView 而不是 UIViewController 中使用 UIScrollView?

在 UIScrollview 中的 UIView 上的屏幕中的框架