我有一个UIViewController,有一堆子视图,如果iPad处于纵向或横向模式,我需要按不同顺序进行布局。我希望能够在旋转后抓住UIViewController视图将要转换的大小,以便我可以为我的子视图计算新的一组帧。然而,在旋转发生之前,我还没有找到任何方法来获得这个新的尺寸,到旋转发生的时候已经太迟了,因为我无法将子视图转换到新的位置。在旋转后获取UIViewController视图的大小
有没有人知道解决这个问题的方法?
我有一个UIViewController,有一堆子视图,如果iPad处于纵向或横向模式,我需要按不同顺序进行布局。我希望能够在旋转后抓住UIViewController视图将要转换的大小,以便我可以为我的子视图计算新的一组帧。然而,在旋转发生之前,我还没有找到任何方法来获得这个新的尺寸,到旋转发生的时候已经太迟了,因为我无法将子视图转换到新的位置。在旋转后获取UIViewController视图的大小
有没有人知道解决这个问题的方法?
你试过willAnimateRotationToInterfaceOrientation:duration:
。正如文档所述:
在调用此方法时,interfaceOrientation属性已设置为新方向。因此,您可以在此方法中执行视图所需的任何其他布局。
我相信视图控制器的视图也应该在这个方法中有其新的尺寸。
定义你的landscape
和portrait
意见在你的头,在Interface Builder重视他们,试试这个代码:
-(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];
为新视图设置动画。
我目前正试图找出这个相同的问题,我发现该视图还没有它的新维度。如果我在'willAnimateRotationToInterfaceOrientation:duration'中设置视图的宽度,那么视图最终会在状态栏上留下空隙。 – Aaron 2013-05-28 21:03:20