В iOS 8 представлен класс UIImageAsset с методом registerImage:withTraitCollection:
. Как использовать этот класс?Как использовать создание и использование UIImageAsset в iOS 8
ответ
Обычно вам не придется. Вместо этого вы будете использовать каталог активов. UIImageAsset, в iOS 8, является просто механизмом, лежащим в основе наборов изображений в каталогах активов.
Например, в каталоге iOS 8 каталог активов может различать версии изображения, предназначенные для ситуаций с разным размером, используя всплывающие меню «Ширина и высота», чтобы указать различные возможности класса размера. Затем, когда вы используете изображение из каталога активов в своем интерфейсе, правильная вещь происходит автоматически. Если мы находимся на iPhone с приложением, повернутым в альбомную ориентацию, и если в наборе изображений есть как высота, так и компактная высота, используется версия Compact height. И эти функции живут; если приложение поворачивается от пейзажа к портрету, и в изображении есть как высота, так и компактная высота, версия Compact height - заменена с любой версией высоты в вашем интерфейсе, автоматически.
Вы заметите, что я не упомянул UIImageAsset. Однако UIImageAsset является основным механизмом. Когда изображение извлекается из каталога активов через init(named:)
и имя его набора изображений, его свойство imageAsset
является UIImageAsset. Все изображения в этом наборе изображений доступны через UIImageAsset; каждое изображение имеет связанную с ним коллекцию признаков (ее traitCollection
), и вы можете запросить UIImageAsset для изображения, соответствующего определенной коллекции признаков, путем вызова imageWithTraitCollection:
. Фактически это именно то, что делает интерфейс для вас. Объект интерфейса, который может отображать изображение, автоматически распознает коллекцию в iOS 8; он получает сообщение traitCollectionDidChange:
и отвечает соответственно.
Однако также возможно комбинировать изображения в вашем собственном UIImageAsset. В некотором роде это похоже на создание каталога активов (или, по крайней мере, набора изображений) в коде! В этом примере я извлечу два изображения из набора приложений и настрою их так, чтобы они использовались, когда приложение находится в портретной ориентации, а другое используется, когда приложение является альбомной ориентацией, автоматически:
let tcdisp = UITraitCollection(displayScale: UIScreen.mainScreen().scale)
let tcphone = UITraitCollection(userInterfaceIdiom: .Phone)
let tcreg = UITraitCollection(verticalSizeClass: .Regular)
let tc1 = UITraitCollection(traitsFromCollections: [tcdisp, tcphone, tcreg])
let tccom = UITraitCollection(verticalSizeClass: .Compact)
let tc2 = UITraitCollection(traitsFromCollections: [tcdisp, tcphone, tccom])
let moods = UIImageAsset()
let frowney = UIImage(named:"frowney")
let smiley = UIImage(named:"smiley")
moods.registerImage(frowney, withTraitCollection: tc1)
moods.registerImage(smiley, withTraitCollection: tc2)
После этого, если frowney
помещается в интерфейс - например, путем передачи его к UIImageView, как его изображения, или путем присвоения его в качестве имиджа UIButton - он автоматически чередуется с smiley
когда приложение изменяет ориентацию.
Примечательно то, что эта магия работает , даже если нет настойчивой ссылки на frowney
, smiley
или UIImageAsset (moods
). Причина в том, что frowney
и smiley
кэшируются системой (из-за вызова init(named:)
), и каждый из них поддерживает сильную ссылку на UIImageAsset, с которой они зарегистрированы.
- 1. Как использовать inputAccessoryViewController в iOS 8
- 2. iOS 8: Как использовать segues
- 3. Как использовать поворот в iOS 8
- 4. iOS 8 Использование внешнего GPS
- 5. Использование скомпилированного Swift 2 в iOS 8
- 6. playerID устарел в IOS 8: использовать плеер
- 7. REFrostedViewController и iOS 8
- 8. Создание библиотеки iOS с xcode 8
- 9. Как использовать UIAlertView с iOS 8?
- 10. iOS 8: Использование таймера в фоновом режиме
- 11. Создание и повторное использование текстового стиля в iOS
- 12. Как использовать и что использовать выражение лямбда в Java 8?
- 13. Зачем использовать @ 1x изображение в iOS 8 и выше?
- 14. [UIImageAsset сохранить]: сообщение, отправленное на высвобождены например
- 15. Поддержка как iOS 7, так и iOS 8 Использование AutoLayout и требований Apple
- 16. iOS: Различия в автоопределении с ограничениями на использование subview на iOS 7 и iOS 8
- 17. Использование функций iOS 8 на телефонах iOS 7, hidesBarsOnSwipe
- 18. Как идентифицировать симуляторы iOS 8 и iOS 9 в iPhoneSimulator?
- 19. Как заблокировать ориентацию устройства в iOS 7 и iOS 8
- 20. Как обнаружить IOS 7, 8 и широкоэкранный?
- 21. xcode ios 7 и ошибка экрана 8 экрана ios 8
- 22. Использование jQuery в ios 8 расширение приложения файлы javascript
- 23. IOS 8 и диалоговые окна
- 24. iOS 8 и анонсы приложений
- 25. Основы построения для iOS 8 и выше в XCode 8
- 26. Проблема UIActivityViewController iOS 7 и iOS 8?
- 27. Использование UTF-8 и альтернативы
- 28. Использование UILexicon для реализации автозамены в iOS 8 Расширение клавиатуры
- 29. После iOS 8 я могу продолжать использовать UIActionSheet и UIAlertView?
- 30. Tomcat 8 и Java 8: использование памяти
Отличное разложение! – seeker12