根据设备方向在 alloc/init 上设置正确的 UIView 帧大小
Posted
技术标签:
【中文标题】根据设备方向在 alloc/init 上设置正确的 UIView 帧大小【英文标题】:Setting the correct UIView frame size on alloc/init depending on device orientation 【发布时间】:2011-03-06 08:11:55 【问题描述】:我已将所有视图设置为纵向模式,然后相应地设置自动调整大小掩码,以便在方向更改时自动调整视图大小....但是,对于已经显示的视图,这似乎工作正常。如果我在横向模式下加载任何新视图,我会在加载的视图的框架上获得反转的宽度和高度值。
我是否必须根据每个主视图的方向计算框架大小? 例如,而不是
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】:我使用[[UIScreen mainScreen] applicationFrame];
管理我的视图框架。
它在构建通用应用程序时也非常有用,因为您可以使用它来设计可在两种设备上正确显示的视图。
【讨论】:
以上是关于根据设备方向在 alloc/init 上设置正确的 UIView 帧大小的主要内容,如果未能解决你的问题,请参考以下文章
即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; - 错误