【问题标题】:How to detect when Cocoa app switches from retina to non-retina screen?如何检测 Cocoa 应用程序何时从视网膜切换到非视网膜屏幕?
【发布时间】:2014-04-17 10:46:45
【问题描述】:

我正在使用连接到第二个非视网膜显示器的 Macbook Pro Retina。如何检测我的应用何时移至 非视网膜 显示屏?

编辑:这是一个 OpenGL 应用程序。我在NSScreen 中使用-backingScaleFactor 来检测屏幕的比例因子。我正在寻找一种方法来检测这种变化何时发生。

【问题讨论】:

  • 为什么需要这个?这不是必需的。当切换到非视网膜显示器时,OS X 会重新调整你的 UI。
  • MrAsterisco 提出了一个很好的问题:应该使用 PDF 或使用 FileName@2x 命名方案提供艺术品,这样 Cocoa 将自动使用正确的分辨率。如果您有自定义场景,请编辑您的问题并详细描述。
  • 这是一个纯 OpenGL 应用程序。我需要能够检测到它,这样我才能以不同的方式处理绘图。

标签: objective-c macos cocoa opengl retina-display


【解决方案1】:

NSWindow 将发布NSWindowDidChangeBackingPropertiesNotification。如果窗口的委托实现了该方法,它将收到-windowDidChangeBackingProperties:。一个视图将收到-viewDidChangeBackingProperties

请参阅 Apple 的 High Resolution Guidelines for OS X 中的 "Handle Dynamic Changes in Window Resolution Only When You Must" 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2014-03-19
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多