Как исправить размытые изображения на NSButton в приложении какао? - PullRequest
0 голосов
/ 21 января 2019

У меня есть пара NSButtons, которые действуют как элементы управления плеером (игра, пауза и т. Д.) Когда я назначаю им изображение, оно выглядит размытым.

  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, но я пробовал .png с 1x, 2x и 3x, и оно все еще выглядело размытым.

Я также проверил этот вопрос: Изображения в NSButton и NSImageView размыты

Но мне это тоже не помогло.

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Решение было очень простым.

  1. Откройте каталог активов.

  2. Выберите все ваши размытые активы.

  3. Откройте инспектор атрибутов, нажав: команда + опция + 4.

  4. Установите флажок «Сохранить векторные данные».

  5. Под этим флажком найдите «Масштаб» и установите для него значение «Единый масштаб»

Обратите внимание, что это работает только в том случае, если ваш дизайнер экспортировал значки в виде файла PDF. Кроме того, он не будет работать, если вы просто конвертируете .png или .jpg в .pdf, фактическое векторное изображение должно быть экспортировано в .pdf.

0 голосов
/ 21 января 2019

Вот несколько попыток, которые позволили мне исправить размытые края в прошлом.

  1. Предполагая, что вы работаете в Мохаве и / или используете представления со слоями, убедитесь, что NSButtonрисует свой собственный цвет фона (setDrawsBackground YES).Иначе, что может случиться с CoreAnimation CALayer, так это то, что операция смешивания фоновой альфа NSImage некачественная / неправильная.
  2. Это не должно применяться к NSImage, но, возможно, оно того стоит: /5044892/nsbezierpath-skruglennyi-pryamougolnik-imeet-plohie-ugly
  3. [nsImage setScalesWhenResized: NO];
  4. попробуйте разные NSCompositingOperation NSCompositeCopy и NSCompositeSourceOver
...