如何在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

上一篇: How to get the screen width and height in iOS?

下一篇: Multiple lines of text in UILabel