如果我将几个UIViewControllers推入我的导航堆栈,那么不可见(底部)视图控制器如何/何时重新布局?它们是否与可见视图控制器同时布局,或者只有在它们弹出到显示器堆栈上时才会布局?
修改 我目前正在管理自己调整子视图的大小(而不是设置autoresizing = YES)。我在willAnimateRotationToInterfaceOrientation方法中调整大小,这样它就可以很好地动画了。我猜这个方法没有被调用任何uiviewcontroller不在显示堆栈之上。那么有没有一种内置的方法可以知道当前的uiviewcontroller是否正在显示,如果不是,我应该覆盖哪个方法来重新布局我的子视图,因为uiviewcontrollers不在显示堆栈的顶部?
谢谢!
阳光
答案 0 :(得分:0)
我建议您在viewWillAppear
中查看方向。如果您在此处检查方向,则可以确保视图始终显示为给定方向的正确布局。您仍然需要在willAnimateRotationToInterfaceOrientation
中旋转它。
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{
[self layoutForPortrait];
}
else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
{
[self layoutForLandscape];
}
}