我目前正在使用[[UIScreen mainScreen] bounds].size.width
和height来获取屏幕宽度和高度,以便从服务器获取新图像(填满屏幕)。我的问题是看起来边界不会改变方向变化。因此,如果我旋转设备,它仍然会给我纵向宽度/高度,即使设备现在处于横向状态。我不想根据当前方向对屏幕宽度/高度进行硬编码。有没有办法可以检查正确反映方向变化的屏幕宽度和高度?
答案 0 :(得分:2)
你可以通过
获得宽度和高度int h = self.view.frame.size.height;
int w = self.view.frame.size.width;
答案 1 :(得分:2)
最好的方法可能是:
CGSize appSize = [UIApplication sharedApplication].keyWindow.rootViewController.view.bounds.size;
并且还使用appSize.height
作为高度,使用appSize.width
作为宽度
这将返回最顶层视图的方向调整大小,该大小始终填满整个屏幕,但可能会根据您的状态栏和wantFullscreen设置排除状态栏。
答案 2 :(得分:0)
[UIScreen mainScreen].bounds.size
返回未旋转的边界。您可以在适当的屏幕UIView上使用convertRect:fromView:
方法(在fromView中传递nil)来调整旋转等。
答案 3 :(得分:0)
我一直在开发一个应用程序,我们在几次遇到这样的问题,所以我希望我可以提供帮助:
UIViewController
来管理您的图片。-shouldAutorotateToInterfaceOrientation:
实现返回YES
。UIImageView
而不是UIImage
,然后尝试在图片视图的 superview 上设置autoresizesSubviews
(这是查看控制器的视图)到YES
。autoresizingMask
。willRotateToInterfaceOrientation:duration:
并以编程方式设置图像的帧。请记住,它的超级视图(UIViewController's
视图)尚未旋转,因此其框架尚未更新。willAnimateRotationToInterfaceOrientation:duration:
,虽然我不太清楚此方法与前者之间的区别。希望这会有所帮助,让我知道你的结果!
-Bruce
答案 4 :(得分:0)
尝试从applicationFrame获取高度和宽度
UIScreen.mainScreen()。applicationFrame.size.height