0

我的应用程序的菜单额外图标应该向用户反映有意义的信息。但是,事先绘制图标的情况太多了。以编程方式即时准备图标会更容易。获得 NSImage 的大小以绘制(以点或像素为单位)并在视网膜和非视网膜显示器上具有完美外观的最佳方法是什么?

4

1 回答 1

2

在 AppKit 中,视图的大小(以磅为单位)可以通过frame. 从 10.7 开始,每个屏幕都额外有一个backingScaleFactor. 因此,视图将出现在给定屏幕上的像素大小可以通过将框架大小乘以屏幕的支持比例因子来找到。

例如,在只有一个屏幕的计算机上,您可以执行以下操作:

CGFloat backingScaleFactor = [[NSScreen mainScreen] backingScaleFactor];

NSSize pixelSize =
    NSSizeMake(
         view.frame.size.width * backingScaleFactor,
         view.frame.size.height * backingScaleFactor);

所以我想一个答案是在[NSScreen screens].

编辑:......但更好的答案是使用视图convertSizeToBacking:- 例如

pixelSize = [view convertSizeToBacking:view.frame.size];
于 2013-08-21T19:03:41.420 回答