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包括在: