ios - 在 ios 上旋转时更改 subview

标签 ios rotation uiinterfaceorientation

我需要一个 View Controller (在 iPad 上)来共享两种模式,一种是纵向模式,一种是横向模式。实际上,我非常想模仿 UISplitViewController 的功能,但我希望能够将 not 用作顶级 View Controller 。除了 HIG 指南,我有一个普遍的问题,我认为任何在方向之间切换 View 的人都会遇到这个问题。

1) 为了提供 View 之间的平滑过渡,我想在 willRotateToInterfaceOrientation:duration 中调用我的 View 更改(和动画)而不是 didRotateToInterfaceOrientation 方法。问题是,在此阶段, View 框架和边界尚未更改为新的,因此您最终不得不手动设置框架,例如:

subview.frame = CGRectMake(0,0,320,768);

而不是更好的东西,也许:

subview.frame = CGRectMake(0,0,320, self.view.frame.height);

2) 此外,即使您尝试了这样的恶作剧,如果 View 自动调整其 subview 的大小,您仍然无处可去。如果您禁用 subview 的自动调整大小,那么像这样的东西就不再起作用了:

subview.frame = self.view.frame; //because then you'd have to always specify the exact rect.

有没有人对此有任何见解?

谢谢!

最佳答案

尝试使用 willAnimateRotationToInterfaceOrientation:duration:相反。

此外,如果您在 subview 上正确设置了自动调整大小掩码,则您无需关心主视图是否已调整。只需调整 subview 的大小,使其适本地适合主视图的大小,因为它现在的大小就可以正常工作。

如果您没有(或不能)正确设置自动调整大小掩码,那么您应该已经有代码来处理主视图的 layoutSubviews 方法中的大小更改。同样,您不必太在意主视图是否已调整大小。

关于ios - 在 ios 上旋转时更改 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717811/

相关文章:

objective-c - 启用页面和设备旋转/方向更改的 UIScrollView (MADNESS)

ios - 横向到纵向在 ipad 中不起作用?

java - 使用旋转矩阵围绕不同原点旋转对象? (java)

ios - 来自 URL 的 Swift 图片未显示

ios - 在 swift iOS 中类似于 instagram 的评论中标记用户

ios - 在飞行模式下从 coreData 加载数据时崩溃

opengl - 如何在opengl中使用四元数围绕屏幕中心旋转?

java - 在java中旋转矩形对象

ios - 将 iPad 设置为仅在 LandscapeRight 中启动。

ios - 可以从 ipa 文件创建 xcarchive 文件吗?