如何在iOS中获取屏幕宽度和高度?
如何获得iOS屏幕的尺寸?
目前,我使用:
lCurrentWidth = self.view.frame.size.width;
lCurrentHeight = self.view.frame.size.height;
在viewWillAppear:
and willAnimateRotationToInterfaceOrientation:duration:
我第一次获得整个屏幕尺寸。 第二次我得到屏幕减去导航栏。
如何获得iOS屏幕的尺寸?
您发布的代码存在的问题是您需要依据视图大小来匹配屏幕大小,正如您所看到的,情况并非总是如此。 如果您需要屏幕尺寸,您应该查看代表屏幕本身的对象,如下所示:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
分裂视图更新:在评论中,德米特里问道:
如何在分割视图中获取屏幕的大小?
上面给出的代码报告了屏幕的大小,即使在分屏模式下也是如此。 当你使用分屏模式时,你的应用程序的窗口会改变。 如果上面的代码不能提供您期望的信息,那么就像OP一样,您正在查看错误的对象。 不过,在这种情况下,您应该看看窗口而不是屏幕,如下所示:
CGRect windowRect = self.view.window.frame;
CGFloat windowWidth = windowRect.size.width;
CGFloat windowHeight = windowRect.size.height;
小心,[UIScreen mainScreen]也包含状态栏,如果你想检索你的应用程序的框架(不包括状态栏),你应该使用
+ (CGFloat) window_height {
return [UIScreen mainScreen].applicationFrame.size.height;
}
+ (CGFloat) window_width {
return [UIScreen mainScreen].applicationFrame.size.width;
}
我以前使用过这些便利方法:
- (CGRect)getScreenFrameForCurrentOrientation {
return [self getScreenFrameForOrientation:[UIApplication sharedApplication].statusBarOrientation];
}
- (CGRect)getScreenFrameForOrientation:(UIInterfaceOrientation)orientation {
CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
// implicitly in Portrait orientation.
if (UIInterfaceOrientationIsLandscape(orientation)) {
CGRect temp = CGRectZero;
temp.size.width = fullScreenRect.size.height;
temp.size.height = fullScreenRect.size.width;
fullScreenRect = temp;
}
if (![[UIApplication sharedApplication] statusBarHidden]) {
CGFloat statusBarHeight = 20; // Needs a better solution, FYI statusBarFrame reports wrong in some cases..
fullScreenRect.size.height -= statusBarHeight;
}
return fullScreenRect;
}
链接地址: http://www.djcxy.com/p/28203.html