如何使用代码获取屏幕大小?
我想获得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; }