Загрузка изображений
И по функциональным и по эстетическим причинам, изображения являются распространяющимся элементом пользовательских интерфейсов приложения. Они могут быть ключевым фактором дифференциации для приложений.
Много изображений, используемых приложениями, включая изображения запуска и значки приложения, сохранены как файлы в основном пакете приложения. У Вас могут быть изображения запуска и значки, которые являются определенными для типа устройства (iPad по сравнению с iPhone и iPod touch) и оптимизированные для дисплеев с высокой разрешающей способностью. Можно найти полные описания этих связанных файлов образа в Усовершенствованных Приемах Приложения и Связанных с приложением Ресурсов в Руководстве по программированию Приложения для iOS. Обновление Ваших Файлов ресурсов Изображения обсуждает корректировки, делающие Ваши файлы образа совместимыми с экранами с высокой разрешающей способностью.
Кроме того, iOS предоставляет поддержку для загрузки и отображения изображений с помощью и UIKit и Базовых Графических платформ. Как Вы определяете, какие классы и функции для использования для рисования изображений зависит от того, как Вы намереваетесь использовать их. Каждый раз, когда возможно, тем не менее, рекомендуется использовать классы UIKit для представления изображений в коде. Таблица c-1 перечисляет некоторые сценарии использования и рекомендуемые опции для обработки их.
Сценарий | Рекомендуемое использование |
---|---|
Выведите на экран изображение как содержание представления | Используйте |
Выведите на экран изображение как украшение для части представления | Загрузите и нарисуйте изображение с помощью |
Сохраните некоторые растровые данные в объект изображения | Можно сделать это использование функций UIKit или Базовых Графических функций, описанных в Создании Новых Изображений Используя Контексты Растрового изображения. |
Сохраните образ как файл PNG или JPEG | Создайте a |
Системная поддержка изображений
Платформа UIKit, а также системные платформы низшего уровня iOS дает Вам широкий диапазон возможностей для создания, доступа, получения, записи и управления изображениями.
Классы изображения UIKit и функции
Платформа UIKit имеет три класса и один протокол, связанные с изображениями в некотором роде:
UIImage
Объекты этого класса представляют изображения в платформе UIKit. Можно создать их из нескольких других источников, включая Кварцевые объекты изображения и файлы. Методы класса позволяют Вам нарисовать изображения к текущему графическому контексту с помощью различных режимов смешивания и значений непрозрачности.
UIImage
класс автоматически обрабатывает любые требуемые трансформации для Вас, такие как применение надлежащего масштабного коэффициента (учет дисплеев с высокой разрешающей способностью) и, когда данный Кварц отображает, изменяя систему координат изображения так, чтобы это соответствовало систему координат по умолчанию UIKit (где y источник в верхнем левом).UIImageView
Объекты этого класса являются представлениями, выводящими на экран или единственное изображение или анимирующими серию изображений. Если изображение должно быть единственным содержанием представления, используйте
UIImageView
класс вместо того, чтобы рисовать изображение.UIImagePickerController
иUIImagePickerControllerDelegate
Этот класс и протокол дают Вашему приложению способ получить изображения (фотографии) и фильмы, предоставленные пользователем. Класс представляет и управляет пользовательскими интерфейсами для того, чтобы выбрать и сделать фотографии и фильмы. Когда пользователи выбирают фотографию, она поставляет выбранный
UIImage
возразите против делегата, который должен реализовать методы протокола.
В дополнение к этим классам UIKit объявляет функции, которые можно вызвать для выполнения множества задач с изображениями:
Вовлечение поддержанного изображением графического контекста.
UIGraphicsBeginImageContext
функция создает внеэкранный контекст растрового изображения. Можно нарисовать в этом графическом контексте и затем выдержке aUIImage
объект от него. (См. Изображения Получения для получения дополнительной информации.)Получение или кэширование данных изображения. Каждый
UIImage
объект имеет отступающий Базовый объект Графического изображения (CGImageRef
) то, что можно получить доступ непосредственно. Можно тогда передать Базовый Графический объект Изображению платформа I/O для сохранения данных. Можно также преобразовать данные изображения в aUIImage
возразите или против PNG или против формата JPEG путем вызоваUIImagePNGRepresentation
илиUIImageJPEGRepresentation
функции. Можно тогда получить доступ к байтам в объекте данных, и можно записать данные изображения в файл.Запись изображения к Фотоальбому на устройстве. Вызовите
UIImageWriteToSavedPhotosAlbum
функция, передающая в aUIImage
объект, для помещения того изображения в Фотоальбом на устройстве.
Рисование Изображений идентифицирует сценарии при использовании этих классов UIKit и функций.
Другие связанные с изображением платформы
Можно использовать несколько системных платформ кроме UIKit, чтобы создать, получить доступ, изменить, и записать изображения. Если Вы находите, что не можете выполнить определенную связанную с изображением задачу с помощью метода UIKit или функции, функция одной из этих платформ низшего уровня могла бы быть в состоянии, делают то, что Вы хотите. Некоторые из этих функций могли бы потребовать Базового объекта Графического изображения (CGImageRef
). Можно получить доступ CGImageRef
объект, отступающий a UIImage
объект через CGImage
свойство.
Базовая Графическая платформа Кварца является самой важной из системных платформ низшего уровня. Несколько из его функций соответствуют функциям UIKit и методам; например, в то время как другие позволяют Вам создать изображения из различных источников, некоторые Базовые Графические функции позволяют Вам создавать и рисовать к контекстам растрового изображения. Однако Базовая Графика предлагает больше опций для обработки изображений. С Базовой Графикой можно создать и применить маски изображения, создать изображения из частей существующих изображений, применить цветовые пространства и доступ много дополнительных атрибутов изображения, включая байты на строку, биты на пиксель и намерение рендеринга.
Изображение платформа I/O тесно связано с Базовой Графикой. Это позволяет приложению читать и писать большинство форматов файла образа, включая стандартные веб-форматы, изображения расширенного динамического диапазона и необработанные данные камеры. Это обладает быстрым кодированием изображения и декодированием, метаданными изображения и кэшированием изображения.
Библиотека активов является платформой, позволяющей приложению получать доступ к активам, которыми управляет фото приложение. Можно получить актив или представлением (например, PNG или JPEG) или URL. От представления или URL можно получить Базовый объект Графического изображения или необработанные данные изображения. Платформа также позволяет Вам записать изображения в Сохраненный фото Альбом.
Поддерживаемые форматы изображения
Таблица c-2 перечисляет форматы изображения, поддерживаемые непосредственно iOS. Из этих форматов формат PNG является тем, наиболее рекомендуемым для использования в Ваших приложениях. Обычно форматы изображения, что поддержки UIKit являются теми же форматами, поддерживаемыми Изображением платформа I/O.
Формат | Расширения файла |
---|---|
Portable Network Graphic (PNG) |
|
Тегированный формат файлов изображений (TIFF) |
|
Совместная экспертная группа по фотографии (JPEG) |
|
Формат обмена графическими данными (GIF) |
|
Формат Windows Bitmap (DIB) |
|
Windows Icon Format |
|
Windows Cursor |
|
Битовый массив XWindow |
|
Поддержание качества изображения
Обеспечение высококачественных изображений для Вашего пользовательского интерфейса должно быть приоритетом в Вашем проекте. Изображения обеспечивают довольно эффективный способ вывести на экран сложную графику и должны использоваться везде, где они надлежащие. При создании изображений для приложения помните следующие инструкции:
Используйте формат PNG для изображений. Формат PNG обеспечивает содержимое изображения без потерь, означая, что, сохраняя данные изображения к формату PNG и затем читая это назад приводит к тем же самым пиксельным значениям. PNG также имеет оптимизированный формат хранения, разработанный для более быстрого чтения данных изображения. Это - предпочтительный формат изображения для iOS.
Создайте изображения так, чтобы им не было нужно изменение размеров. Если Вы планируете использовать изображение в определенном размере, несомненно, создадут соответствующий ресурс изображения в том размере. Не создавайте увеличенное изображение и уменьшайте масштаб его для адаптации, потому что масштабирование требует дополнительных циклов CPU и требует интерполяции. Если необходимо представить изображение в переменных размерах, включать многократные версии изображения в различных размерах и постепенном уменьшении от изображения, которое является относительно близко к целевому размеру.
Удалите альфа-каналы из непрозрачных файлов PNG. Если каждый пиксель изображения PNG непрозрачен, удалять альфа-канал избегает потребности смешать уровни, содержащие то изображение. Это упрощает составление композита изображения значительно и улучшает производительность получения.