【问题标题】:Why is [[UIScale mainScreen] scale] 1 on an iPad 3 with Xcode 4.2?为什么 [[UIScale mainScreen] scale] 1 在带有 Xcode 4.2 的 iPad 3 上?
【发布时间】:2012-06-20 09:56:13
【问题描述】:

在我的 iPad 3 上进行测试时,

[[UIScreen mainScreen] scale] == 1.0

我的理解是这应该是2.0。

我在 Snow Leopard 上使用带有 Xcode 4.2 的 iOS 5.1 SDK,据我了解,这不是“官方支持”的配置。但是,我无法想象为什么这会影响纯粹在设备上发生的事情。 (我可以想象它会以各种方式破坏模拟器。)

【问题讨论】:

  • 您正在创建一个通用/仅限 iPad 的应用程序吗?
  • 好的,如果只有 iPhone,我可能会看到一个可能的问题。
  • 您如何进行比较,让您认为它返回 1.0?另外,您是否连接了另一个屏幕(通过外部适配器/AirPlay)?
  • @NickForge:我正在使用 cocos2d,它使用if ([[UIScreen mainScreen] scale] == 1.0) 提前退出其视网膜支持设置。我已经使用调试器来验证,是的,scale 正在返回 1.0,这就是代码被跳过的原因。我没有使用外部屏幕。
  • 屏幕边界应始终为 768x1024(这就是使用“点”而不是像素的意义,而是使用比例因子)。你说'to(o?) early-out'......即使在初始化很久之后它仍然产生 scale == 1.0 吗?

标签: ios xcode ipad retina-display


【解决方案1】:

在 XCode 4.3 版之前,[UIScreen scale] 将为 iPad 3 返回 1.0。更新到 4.3 将允许返回正确的 2.0 值。

【讨论】:

    【解决方案2】:

    那是因为屏幕没有缩放。 你可以得到这样的比率:

    [[CCDirector sharedDirector] winSize].width/[[CCDirector sharedDirector] winSizeInPixels].width
    

    如果这等于 1,那么您使用的是非视网膜设备。否则,如果 2 ,在视网膜显示器上。 另外,不要忘记启用视网膜支持。

    问候,

    乔治

    【讨论】:

    • "另外,不要忘记启用视网膜支持。"整个问题是 cocos2d 启用视网膜支持,它没有启用它,因为它使用屏幕比例检查视网膜显示。
    • @Noah Witherspoon - 阅读上面的 cmets - 提出问题的用户说他使用 cocos2D。
    猜你喜欢
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2014-02-16
    • 2011-05-17
    • 2022-01-19
    • 2014-02-24
    • 2011-03-09
    • 2012-03-25
    相关资源
    最近更新 更多