iPhone / iPad:如何以编程方式获取屏幕宽度?

嗨,我想知道是否有一种方法来获得宽度编程。

我正在寻找一些足以容纳iPhone 3GS,iPhone 4,iPad的东西。 此外,宽度应该根据设备是纵向还是横向(对于iPad)而改变。

任何人都知道如何做到这一点? 我一直在寻找一段时间…谢谢!

看看UIScreen 。

例如。

CGFloat width = [UIScreen mainScreen].bounds.size.width; 

看看applicationFrame属性,如果你不想包含状态栏(不会影响宽度)。

更新:事实certificate,UIScreen(-bounds或-applicationFrame)不考虑当前的界面方向。 更正确的方法是问你的UIView的边界 – 假设这个UIView已经被它的View控制器自动旋转了。

 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { CGFloat width = CGRectGetWidth(self.view.bounds); } 

如果视图未被视图控制器自动旋转,那么您将需要检查界面方向以确定视图边界的哪一部分表示“宽度”和“高度”。 请注意,框架属性会给你在UIWindow的坐标空间的视图的矩形(默认情况下)不会考虑界面的方向。

 CGRect screen = [[UIScreen mainScreen] bounds]; CGFloat width = CGRectGetWidth(screen); //Bonus height. CGFloat height = CGRectGetHeight(screen); 

这可以在3行代码中完成

 // grab the window frame and adjust it for orientation UIView *rootView = [[[UIApplication sharedApplication] keyWindow] rootViewController].view; CGRect originalFrame = [[UIScreen mainScreen] bounds]; CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil]; 

从iOS 9.0开始,无法可靠地获取方向。 这是我用于我只为肖像模式devise的应用程序的代码,所以如果应用程序在横向模式下打开它仍然是准确的:

 screenHeight = [[UIScreen mainScreen] bounds].size.height; screenWidth = [[UIScreen mainScreen] bounds].size.width; if (screenWidth > screenHeight) { float tempHeight = screenWidth; screenWidth = screenHeight; screenHeight = tempHeight; } 

使用这个代码会有帮助

 [[UIScreen mainScreen] bounds].size.height [[UIScreen mainScreen] bounds].size.width 

这是一个迅速的方式来获得屏幕大小,这也需要考虑当前的界面方向:

 var screenWidth: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.width } else { return UIScreen.mainScreen().bounds.size.height } } var screenHeight: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.height } else { return UIScreen.mainScreen().bounds.size.width } } var screenOrientation: UIInterfaceOrientation { return UIApplication.sharedApplication().statusBarOrientation } 

这些作为标准function包括在:

https://github.com/goktugyil/EZSwiftExtensions