方向改变,什么时候我的视图控制器都旋转了?

时间:2011-09-08 03:04:12

标签: ios layout uiviewcontroller rotation orientation

如果我将几个UIViewControllers推入我的导航堆栈,那么不可见(底部)视图控制器如何/何时重新布局?它们是否与可见视图控制器同时布局,或者只有在它们弹出到显示器堆栈上时才会布局?

修改 我目前正在管理自己调整子视图的大小(而不是设置autoresizing = YES)。我在willAnimateRotationToInterfaceOrientation方法中调整大小,这样它就可以很好地动画了。我猜这个方法没有被调用任何uiviewcontroller不在显示堆栈之上。那么有没有一种内置的方法可以知道当前的uiviewcontroller是否正在显示,如果不是,我应该覆盖哪个方法来重新布局我的子视图,因为uiviewcontrollers不在显示堆栈的顶部?

谢谢!

阳光

1 个答案:

答案 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];                
    }
}