3

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

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

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

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

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

2)此外,即使您尝试这种恶作剧,如果视图自动调整其子视图的大小,您仍然无法使用它。如果您禁用子视图的自动调整大小,那么这样的东西甚至不再起作用:

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

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

谢谢!

4

1 回答 1

5

尝试willAnimateRotationToInterfaceOrientation:duration:改用。

此外,如果您在子视图上正确设置了自动调整大小的蒙版,则无需关心主视图是否已调整。只需调整子视图的大小以适当地适应主视图的大小,就像现在调整大小一样,它就可以工作了。

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

于 2011-04-19T14:38:34.667 回答