根据设备方向在 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 委托方法

更改设备方向上的图像 jquery-mobile

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; - 错误

拍摄照片时正确设置正确的照片方向

如何在 React Native 中根据设备类型设置强制设备方向?

如何根据方向元数据旋转 JPEG 图像?