objective-c - 苹果操作系统 X : Best way to do runtime check for retina display?

标签 objective-c macos cocoa osx-lion retina-display

给定一个在 Mac OS X 10.7 及更高版本上运行的 Cocoa 应用程序:

在运行时检查您的应用程序当前是否在至少连接了一个 Retina 显示器的 Mac 上运行的最佳方法是什么?

如果检查这类事情真的是错误的,我完全欢迎对原因进行合理的解释(如果这些答案很好,我会投赞成票)。

但我还是想知道 :)。

您似乎可以专门针对新的 Mac Book Pro“Retina”硬件(目前唯一具有视网膜显示屏的 Mac)进行检查,但我真的更喜欢更通用/通用/面向 future 的检查方法。

理想情况下,我想知道如何检测视网膜显示屏,而不是目前恰好配备视网膜显示屏的特定 Mac 型号。

最佳答案

如果您确实需要这样做,请查看-[NSScreen backingScaleFactor]。但是,这看起来确实是错误的,至少在不知道更多关于你想知道的原因的情况下是这样。

虽然目前只有一台 Mac 配备 Retina 显示屏,但最终可能会出现支持 Retina 的独立显示屏(并且可以在运行时连接/分离)并且您可以在 1x 模式下配置内置 Retina 显示屏.因此,“是否连接了 Retina 显示屏”这个问题的答案随时可能发生变化。

相反,您可能想知道您的内容是否应该使用 -convert*ToBacking: 方法或 -[NSWindow backingScaleFactor] 以给定比例绘制。有关更多详细信息,请观看 WWDC 2012 session 视频“OS X 上高分辨率的高级提示和技巧”(发布后,希望在接下来的几周内发布)。

关于objective-c - 苹果操作系统 X : Best way to do runtime check for retina display?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067066/

相关文章:

objective-c - 使用ExtAudioFile read读取音频文件时,是否可以不连续读取音频 float ?

objective-c - plist 文件加载的 NSDictionary 内存泄漏

iphone - kAudioSessionProperty_OtherAudioIsPlaying 始终返回 True

objective-c - 为什么我的 Cocoa 应用程序中的某些行需要永远运行?

macos - 找不到符号 _OBJC_IVAR_$_NSView._layer(在 AppKit 中)仅在 10.7 上,在 10.8 和 10.9 上工作正常

macos - 将核心图添加到 OS X 项目时遇到问题

swift - 在 Swift 的 NSTextfield 中设置最大字符数(为一个)

ios - 从 chartboost 删除应用程序?

iOS 如何使用 segue 获取对嵌入 Storyboard容器中的 View Controller 的引用?

java - 什么会影响 Mac 版 JFrame 上缩放按钮的启用状态?