我的应用程序菜单附加图标应该向用户反映有意义的信息。但是,预先绘制图标的情况太多了。在程序上以编程方式准备图标会更容易。 什么是获得NSImage尺寸(以点或像素为单位)并在视网膜和非视网膜显示器上有完美外观的最佳方法?
答案 0 :(得分:2)
在AppKit中,点的视图大小可通过frame
检索。从10.7开始,每个屏幕还有一个backingScaleFactor
。通过将帧的大小乘以屏幕的后备比例因子,可以找到视图因此出现在给定屏幕上的像素大小。
E.g。在一台只有一个屏幕的计算机上,您可以这样做:
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];