旋转后获取ViewController视图的大小

时间:2010-12-13 18:58:39

标签: iphone objective-c ios ios4

我有一个带有一堆子视图的UIViewController,如果iPad处于纵向或横向模式,我需要以不同的顺序进行布局。我希望能够在旋转后获取UIViewController视图将要转换为的大小,以便我可以为子视图计算新的帧集。但是,我没有找到任何方法在旋转发生之前获得这个新的大小,并且在旋转发生的时候已经太晚了,因为我无法动画子视图到新位置的过渡。

有没有人知道解决这个问题的方法?

2 个答案:

答案 0 :(得分:3)

您是否尝试过willAnimateRotationToInterfaceOrientation:duration:。正如文档所述:

  

调用此方法时,interfaceOrientation属性已设置为新方向。因此,您可以在此方法中执行视图所需的任何其他布局。

我认为视图控制器的视图在此方法中也应该有新的维度。

答案 1 :(得分:1)

在标头中定义landscapeportrait视图,将它们附加到“界面”构建器中,然后尝试以下代码:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
      (interfaceOrientation == UIInterfaceOrientationLandscapeRight))){

        self.view = landscape;

 }else if(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
     (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){

        self.view = portrait;

    }
    return YES;
}

这比计算视图中每个对象的新帧要容易得多。

要制作动画,您可以投放[UIView beginAnimations:@"animation" context:nil];& [UIView commitAnimations];为新视图设置动画。