如何修复可可应用程序中NSButton上的模糊图像?

时间:2019-01-21 14:28:45

标签: swift cocoa appkit nsimage nsbutton

我有几个NSButton,它们的作用类似于播放器控件(播放,暂停等) 当我为它们分配图像时,该图像看起来很模糊。

  let playPauseButton: NSButton = {
    let btn = NSButton(frame: .zero)
    let image = NSImage(named: "pauseIcon")
    btn.imageScaling = NSImageScaling.scaleNone
    btn.image = image
    btn.setAccessibilityLabel("Pause")
    btn.isBordered = false
    return btn
}()

可以在以下位置查看图像: https://www.dropbox.com/s/38tvh49ikc2m4x7/Play.pdf?dl=0

此图片为.pdf,但我尝试使用1x,2x和3x的.png,但它仍然显得模糊。

我也检查了这个问题: Images in NSButton and NSImageView Blurred

但这也没有帮助我。

2 个答案:

答案 0 :(得分:0)

有很多尝试可以解决过去模糊的边缘

  1. 假设您正在Mojave中运行和/或使用层支持的视图,请确保NSButton绘制其自己的背景色(setDrawsBackground YES)。否则,CoreAnimation CALayer可能发生的情况是NSImage背景Alpha的混合操作不合标准/错误。
  2. 这不适用于NSImage,但值得一试:http://stackoverflow.com/questions/5722085/nsbezierpath-rounded-rectangle-has-bad-corners
  3. [nsImage setScalesWhenResized:NO];
  4. 尝试不同的NSCompositingOperation NSCompositeCopy与NSCompositeSourceOver

答案 1 :(得分:0)

解决方案非常简单。

  1. 打开资产目录。

  2. 选择所有模糊的资产。

  3. 通过按以下命令打开属性检查器:Command + Option + 4。

  4. 选中“保留矢量数据”框。

  5. 在该复选框下,找到“比例”并将其设置为“单比例”

请注意,这仅在设计人员将图标导出为PDF文件时有效。另外,如果仅将.png或.jpg转换为.pdf,它也将不起作用,实际的矢量图像必须导出为.pdf。