在ios上旋转时更改子视图

在ios上旋转时更改子视图,ios,rotation,uiinterfaceorientation,Ios,Rotation,Uiinterfaceorientation,我需要一个视图控制器(在ipad上)来共享两种模式,一种是纵向模式,另一种是横向模式。实际上,我非常想模仿UISplitViewController的功能,但我希望能够将其用作顶级视图控制器。撇开指导方针不谈,我有一个普遍的问题,我认为任何人在不同方向之间转换观点都会遇到这个问题 1) 为了提供视图之间的平滑过渡,我想在willRotateToInterfaceOrientation:duration中调用我的视图更改(和动画),而不是didRotateToInterfaceOrientatio

我需要一个视图控制器(在ipad上)来共享两种模式,一种是纵向模式,另一种是横向模式。实际上,我非常想模仿UISplitViewController的功能,但我希望能够将其用作顶级视图控制器。撇开指导方针不谈,我有一个普遍的问题,我认为任何人在不同方向之间转换观点都会遇到这个问题

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.
有人对此有什么见解吗

谢谢

尝试改用

此外,如果在子视图上正确设置了自动调整大小遮罩,则不必关心主视图是否已调整。只需调整子视图的大小,使其适合主视图,因为它现在已经调整了大小,这样就可以正常工作了


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

顺便说一句,自动调整大小遮罩对我不起作用,因为视图将根据方向删除并添加到屏幕上。不过,我会对他们胡说八道,看看这是否有效。