在iOS中如何获得屏幕的尺寸?
目前,我使用:
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;
在viewWillAppear:和willAnimateRotationToInterfaceOrientation:duration:
这是我第一次看到整个屏幕的大小。第二次我得到的屏幕减去导航栏。
在iOS中如何获得屏幕的尺寸?
目前,我使用:
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;
在viewWillAppear:和willAnimateRotationToInterfaceOrientation:duration:
这是我第一次看到整个屏幕的大小。第二次我得到的屏幕减去导航栏。
当前回答
这里我已经更新了swift 3
applicationFrame已从iOS 9弃用
在swift 3中,他们已经删除了(),他们已经改变了一些命名惯例,你可以参考这里的链接
func windowHeight() -> CGFloat {
return UIScreen.main.bounds.size.height
}
func windowWidth() -> CGFloat {
return UIScreen.main.bounds.size.width
}
其他回答
我意识到这是一篇旧文章,但有时我发现#定义这样的常量很有用,这样我就不必担心它:
#define DEVICE_SIZE [[[[UIApplication sharedApplication] keyWindow] rootViewController].view convertRect:[[UIScreen mainScreen] bounds] fromView:nil].size
无论设备朝向如何,上述常量都应返回正确的大小。然后获取尺寸就像这样简单:
lCurrentWidth = DEVICE_SIZE.width;
lCurrentHeight = DEVICE_SIZE.height;
我们还必须考虑设备的朝向:
CGFloat screenHeight;
// it is important to do this after presentModalViewController:animated:
if ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortrait || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortraitUpsideDown){
screenHeight = [UIScreen mainScreen].applicationFrame.size.height;
}
else{
screenHeight = [UIScreen mainScreen].applicationFrame.size.width;
}
这里我已经更新了swift 3
applicationFrame已从iOS 9弃用
在swift 3中,他们已经删除了(),他们已经改变了一些命名惯例,你可以参考这里的链接
func windowHeight() -> CGFloat {
return UIScreen.main.bounds.size.height
}
func windowWidth() -> CGFloat {
return UIScreen.main.bounds.size.width
}
这是非常非常容易得到你的设备大小,以及考虑方向:
// 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];
现代的答案是:
如果你的应用在iPad上支持分屏视图,这个问题就变得有点复杂了。你需要窗口的大小,而不是屏幕的大小,这可能包含2个应用程序。窗口的大小也可能在运行时发生变化。
使用应用程序主窗口的大小:
UIApplication.shared.delegate?.window??.bounds.size ?? .zero
注意:上述方法在启动时可能会在窗口成为关键窗口之前得到错误的值。如果你只需要宽度,非常推荐以下方法:
UIApplication.shared.statusBarFrame.width
使用uisscreen .main.bounds的旧解决方案将返回设备的边界。如果你的应用程序运行在分屏视图模式,它会得到错误的尺寸。
当应用程序包含2个或2个以上的窗口且窗口大小较小时,最热答案中的Self.view.window可能会显示错误的大小。