Невозможно загрузить изображения в сборке выпуска скринсейвера ma c (она работает в отладочной сборке Xcode) - PullRequest
6 голосов
/ 23 февраля 2020

Я получил этот скринсейвер с ма c из здесь .

Я изменил его, чтобы показать изображение вместо textField.

Проблема заключается в следующем: он может показать любые объекты Xcode, такие как textView. textField, Button и др. c ... но он не может загрузить изображение в imageView. (он может загружать образ в отладочной сборке Xcode, но не в сборке выпуска на заставках ma c)

Debug Build Screenshot

Скриншот сборки выпуска . Вот мой код для показа изображения:

  let imageView = NSImageView(frame: self.frame)
  imageView.image = NSImage(named: "Image")
  imageView.layer?.backgroundColor = NSColor.red.cgColor
  imageView.backgroundColor(.red)
  addSubview(imageView)
  DispatchQueue.main.async {
      imageView.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
      self.setNeedsDisplay(imageView.frame)
  }

Я почти уверен, что он не может получить доступ к файлу изображения, но как я могу это исправить? это? На самом деле поведение заставки очень странное, когда я добавляю еще один элемент пользовательского интерфейса после этого ImageView, и ни один из них не отображается на экране.

Что не так с заставками MacOS? (Я загрузил некоторые сторонние заставки с некоторых сайтов, и они тоже были черными экранами.)

1 Ответ

2 голосов
/ 26 февраля 2020

NSImage(named:) загружается из основного пакета приложения, но ваши изображения в плагине, поэтому используйте что-то вроде следующего (загрузка из пакета, содержащего ваш класс)

imageView.image = Bundle(for: type(of: self)).image(forResource: "Image")

Протестировано с Xcode 11.2 / macOS 10.15 , Изображения находятся в Активе целевого подключаемого модуля заставки.

...