Apple следит за несколькими папками Assets.xcassets - PullRequest
1 голос
/ 10 мая 2019

В чем разница между Assets.xcassets в

1) Приложение WatchKit

2) Расширение WatchKit

Я не уверен, в какую папку поместить изображение.

Мне нужно получить доступ к изображению (например, testImage.png) как в Interface.storyboard, который находится в папке WatchKit App, так и в WatchKit Extension. В контроллере я устанавливаю это с помощью:

let menuIcon: UIImage? = UIImage(named: menu.iconName)

Я пробовал:

Вариант 1:

1) для размещения изображений в WatchKit App и WatchKit Extension

Что будет означать дубликаты изображений, в две папки Assets.xcassets.

Вариант 2:

1) для размещения изображений только в WatchKit App и изменения целевого членства Assets.xcassets для поддержки WatchKit App и WatchKit Extension

Какой подход лучше? или есть способы получше?

1 Ответ

1 голос
/ 10 мая 2019

Похоже, что это задержка от watchOS 1, когда расширение WatchKit фактически работало на iPhone и отправляло информацию и ресурсы в приложение WatchKit, работающее на часах.

Некоторые вызовы будут работать толькос помощью папки Assets.xcassets приложения WatchKit, например setImageNamed: или setBackgroundImageNamed:

Существует несколько способов изменить текущее изображение объекта интерфейса:

  • Используйте методы setImageNamed: или setBackgroundImageNamed: для назначения изображения, уже находящегося в комплекте приложения Watch.

  • Используйте setImage :, setImageData :, setBackgroundImage: или setBackgroundImageData:>методы для передачи данных изображения из вашего расширения WatchKit в ваше приложение Watch.

Указание изображений по имени более эффективно, поскольку в ваше приложение Watch должна быть передана только строка имени.watchOS ищет в вашем приложении Watch файл изображения с указанным вами именем.Наиболее эффективный способ эффективного указания изображений - это сохранить их в комплекте приложений Watch и использовать setImageNamed: или setBackgroundImageNamed: в зависимости от ситуации, чтобы настроить соответствующий объект.

Изображения, созданные в расширении WatchKit, должны быть переданы вСмотреть приложение, прежде чем они могут быть использованы.Например, использование метода imageNamed: в вашем расширении загружает изображение из пакета вашего расширения WatchKit, а не из пакета вашего приложения Watch.Затем вы можете вызвать метод setImage:, передав объект изображения.Расширение WatchKit автоматически передает изображение в приложение Watch для отображения.Хотя это приводит к дополнительным накладным расходам по сравнению с загрузкой изображений непосредственно из пакета приложения Watch, это не должно оказывать существенного влияния ни на производительность, ни на срок службы батареи.

Руководство по программированию приложения для watchOS / изображений

Лично я бы не помещал изображения в обе папки, так как это увеличит размер вашего приложения.Я склонен помещать изображения, которые будут установлены в Storyboard, в папку приложения WatchKit, а также все изображения, которые будут программно изменяться в расширении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...