代码之家  ›  专栏  ›  技术社区  ›  sinsro

在通用应用程序中,有没有一种安全的方法可以找到以像素为单位的显示尺寸?

  •  0
  • sinsro  · 技术社区  · 15 年前

    当我试图在我的iPhone/iPad通用应用程序中获得屏幕尺寸时,我遇到了一些奇怪的问题。

    我第一次使用

    [uiscreen主屏幕]边界]

    但它没有返回iPhone4的正确大小(至少在模拟器中没有),它只是返回320x480所有iPhone

    然后我改为

    cgsize screensize=mainscr.currentmode.size;

    它在所有苹果设备的模拟器中都能工作,但是当在iPhone3GS设备上运行这一行时,程序会以sigabrt退出。

    设备正在运行3.1.2

    你知道如何以设备安全的方式获得显示器的像素尺寸吗?

    3 回复  |  直到 15 年前
        1
  •  3
  •   kennytm    15 年前

    UIScreen.currentMode 在<3.2中不可用,因此您需要与 -respondsToSelector:

    CGSize screenSize;
    if ([mainscr respondsToSelector:@selector(currentMode)])
      screenSize = mainscr.currentMode.size;
    else
      screenSize = mainscr.bounds.size;
    

    同样地, UIScreen.scale 在<4.0中不可用,如果使用,请与 -响应选择器: .

    CGFloat scale = [mainscr respondsToSelector:@selector(scale)] ? mainscr.scale : 1.0f;
    
        2
  •  3
  •   Charter    15 年前

    [[uiscreen mainscreen]bounds]返回 歪投球 像素 但是可以使用scale参数转换像素分辨率。

        3
  •  0
  •   badweasel    15 年前

    正确的思考方法是屏幕分辨率为320x480,但显示比例为2.0。意识到未来“其他”苹果设备很可能会有其他显示比例。想象一下,有一天,一款新的iPad的规模是1.5…

      if([[UIScreen mainScreen] respondsToSelector:@selector"scale"]) {
          displayScale = [[UIScreen mainScreen] scale]; }
    

    他们这样做的原因是为了使在任何设备上编写应用程序变得容易。你可以在100100把一个物体放在屏幕上,它将在两个设备上的同一位置。使用@2X命名方法提供两组图像,一组为1X比例,另一组为2X比例。

    推荐文章