根据设备方向在alloc / init上设置正确的UIView帧大小

时间:2011-03-06 08:11:56

标签: iphone objective-c ipad uiview uiviewcontroller

我已在纵向模式下设置了所有视图,然后相应地设置了自动调整大小,以便在方向更改时自动调整视图大小....但是,对于已显示的视图,这似乎正常。如果我在横向模式下加载任何新视图,我会在加载的视图框架上获得反转的宽度和高度值。

我是否必须根据每个主视图的方向计算帧大小? 例如,而不是

UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0,0,500, 100)];

我必须这样做:

CGRect frame;
if([UIDevice orientation] == UIDeviceOrientationLandscape){
   frame = CGRectMake(0,0,100,500)
}else{
    frame = CGRectMake(0,0,500,100)
}
UIView* view = [[UIView alloc] initWithFrame:frame];

对于我来说似乎有点啰嗦,因为加载视图后的自动旋转效果非常好!

如何管理视图框?

感谢

1 个答案:

答案 0 :(得分:2)

我使用[[UIScreen mainScreen] applicationFrame];管理我的视图框架。

在构建通用应用程序时,它也非常有用,因为您可以使用它来设计可在两个设备上正确显示的视图。