如何使用代码获取屏幕大小?

我想获得iPhone屏幕大小给计算,但我没有find任何文件如何得到它。 你能帮我弄清楚吗?

谢谢

您可以在UIScreen的实例上使用bounds属性:

 CGRect screenBound = [[UIScreen mainScreen] bounds]; CGSize screenSize = screenBound.size; CGFloat screenWidth = screenSize.width; CGFloat screenHeight = screenSize.height; 

大多数人会想要主屏幕; 如果你有一个设备连接到电视机,你可能想要迭代UIScreens并获得每个界限。

有关UIScreen类文档的更多信息。

这是一个“迅捷”的解决scheme:(更新为swift 3.x)

 let screenWidth = UIScreen.main.fixedCoordinateSpace.bounds.width let screenHeight = UIScreen.main.fixedCoordinateSpace.bounds.height 

这个报告的点数不是像素,而是“总是反映出设备在屏幕上的屏幕尺寸” (Apple Docs) 。 没有必要用UIAnnoyinglyLongDeviceOrientation来打扰!

如果您希望宽度和高度反映设备方向:

 let screenWidth = UIScreen.main.bounds.width let screenHeight = UIScreen.main.bounds.height 

这里的宽度和高度将根据屏幕是纵向还是横向来触发触发器值。

这里是如何获得以像素为单位的屏幕尺寸而不是点数:

 let screenWidthInPixels = UIScreen.main.nativeBounds.width let screenHeightInPixels = UIScreen.main.nativeBounds.height 

这也是“基于纵向设备的设备,这个值不会随着设备的旋转而改变”。 (Apple Docs)

请注意,对于swift 2.x和更低,你应该使用UIScreen.mainScreen()而不是UIScreen.main

使用此代码在iOS8中修复:

 float SW; float SH; UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; if (( [[[UIDevice currentDevice] systemVersion] floatValue]<8) && UIInterfaceOrientationIsLandscape(orientation)) { SW = [[UIScreen mainScreen] bounds].size.height; SH = [[UIScreen mainScreen] bounds].size.width; } else { SW = [[UIScreen mainScreen] bounds].size.width; SH = [[UIScreen mainScreen] bounds].size.height; } 

如果你想知道某个视图的大小,或者如果你想知道设备的屏幕大小,请使用[[UIScreen mainScreen] bounds]的大小来使用UIView的属性bounds

类似于上面的,但略less一些:

 CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; 
 float screen_Height; float screen_Width; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) { screen_Height = [[UIScreen mainScreen] bounds].size.height; screen_Width = [[UIScreen mainScreen] bounds].size.width; } else { screen_Height = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width); screen_Width = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height); } 

这是一个迅速的方式来获得屏幕尺寸:

 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包含在这里 。

这也在文档中。

[[UIScreen mainScreen]界限]返回不考虑设备方向的物理屏幕尺寸。

如果您需要根据当前的方向获取屏幕尺寸,请参阅如何获取屏幕的取决于方向的高度和宽度?

使用UIScreen的界限是一个很好的方法,但是您应该使用CGGeometry函数来访问CGRect的数据,而不是直接访问它。 查看CGGeometry 文档 。

 CGRect screenBound = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = CGRectGetWidth(screenBound); CGFloat screenHeight = CGRectGetHeight(screenBound); 

假设您想要考虑当前的方向,请使用:

 float screen_width; float screen_height; float vers = [[[UIDevice currentDevice] systemVersion] floatValue]; UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation; if (vers < 8 && UIInterfaceOrientationIsLandscape(orient)) { screen_height = [[UIScreen mainScreen] bounds].size.width; screen_width = [[UIScreen mainScreen] bounds].size.height; } else { screen_width = [[UIScreen mainScreen] bounds].size.width; screen_height = [[UIScreen mainScreen] bounds].size.height; }