Представления изображения
Представление изображения выводит на экран изображение или анимированную последовательность изображений. Представление изображения позволяет Вам эффективно нарисовать изображение (такое как JPEG или файл PNG) или мультсериал изображений на экране, масштабируя изображения автоматически для адаптации в текущем размере представления. Представления изображения могут дополнительно вывести на экран различное изображение или серию изображений каждый раз, когда выделяется представление. Представления изображения поддерживают те же форматы файлов как UIImage
класс — TIFF, JPEG, PNG, битовый массив Windows (bmp), значок Windows (ico), курсор Windows (злая собака) и битовый массив X-оконной системы (xbm) форматы.
Цель. Представления изображения позволяют пользователям:
Представление отображает в приложении
Реализация. Представления изображения реализованы в UIImageView
класс и обсудил в Ссылке класса UIImageView.
Конфигурация. Сконфигурируйте представления изображения в Интерфейсном Разработчике в разделе Image View Инспектора Атрибутов. Несколько конфигураций не могут быть сделаны через Инспектора Атрибутов, таким образом, необходимо сделать их программно. Также, если Вы предпочитаете, можно установить другие конфигурации программно.
Содержание представлений изображения
Представления изображения обеспечивают значительную программируемую настройку путем изменения свойств на объектах представления и свойств на любом объекте изображения, который Вы загрузили в представление.
При отображении единственного изображения большинство представлений изображения требует минимальной конфигурации вне установки изображения. При отображении мультсериала изображений необходимо также сконфигурировать настройки анимации.
При первом использовании объекта представления изображения вывести на экран единственное изображение можно выбрать изображение для отображения использования Изображения (image
) поле в Инспекторе Атрибутов. Если бы Вы не выбирали изображение в Инспекторе Атрибутов, то необходимо установить начальное изображение путем вызова initWithImage:
или путем установки image
свойство к a UIImage
объект, описывающий изображение, которое Вы хотите вывести на экран.
Если Вы хотите показать различное изображение, когда представление выделяется, можно указать эту информацию в Выделенном (highlightedImage
) поле. Также любой вызов initWithImage:highlightedImage:
когда Вы инициализируете изображение или устанавливаете highlightedImage
свойство к альтернативному изображению.
Если Вы хотите, чтобы Ваше представление изображения вывело на экран анимированную последовательность изображений, необходимо сделать это программно. Поскольку Вы не можете указать массив изображений в Инспекторе Атрибутов, необходимо записать некоторый код для сообщения представления изображения, отображающего для использования. Чтобы сделать это, установите animationImages
свойство к массиву UIImage
объекты в порядке, в котором они должны быть показаны. Дополнительно установите highlightedAnimationImages
свойство, если Вы хотите показать различную анимацию, в то время как выделяется представление.
Поведение представлений изображения
Используйте выделенный (highlighted
) флажок, чтобы указать, должно ли представление показать стандартную или выделенную последовательность изображений или последовательность изображений.
В любое время можно изменить состояние представления изображения.
При использовании последовательности изображений можно вместо этого сконфигурировать поведение анимации программно:
Установите
animationDuration
к желаемому периоду анимации (в секундах). По умолчанию это свойство вычислено на основе числа изображений в 30 кадрах в секунду.Установите
animationRepeatCount
ограничить число итераций через набор изображений. По умолчанию это свойство имеет значение нуля, что означает, что анимация повторяется навсегда.
Вы запускаете анимацию путем вызова startAnimating
.
Появление представлений изображения
Вы не можете настроить появление представления изображения непосредственно. Однако можно определить, как изображения появляются в представлении путем установки свойств в UIImage
и UIView
уровни.
Режим содержания
Представление contentMode
свойство указывает, как изображение должно масштабироваться и выравниваться в представлении. Это рекомендуется (но не требуется), что Вы используете изображения, которые являются всеми одинаковыми размер. Если изображения будут различными размерами, то каждый будет скорректирован для адаптации отдельно на основе этого режима.
Изображения
Изображение capInsets
, leftCapWidth
, и topCapHeight
свойства указывают ширину и высоту центральной части изображения, которое должно масштабироваться по-другому, чем пограничные зоны (вне той центральной части). Верхние и нижние пограничные зоны размещаются рядом горизонтально. Левые и правые пограничные зоны размещаются рядом вертикально. Углы выведены на экран как есть. Кроме того, изображение alignmentRectInsets
свойство указывает части изображения для игнорирования в целях выравнивания (таких как тень и эффекты свечения).
Можно создать изображения для представлений изображений многими способами, включая:
Используя
imageWithAlignmentRectInsets:
метод, возвращающий полученное изображение с ненулевыми вставками выравнивания.Используя
resizableImageWithCapInsets:
илиresizableImageWithCapInsets:resizingMode:
методы, возвращающие полученное статическое изображение с ненулевыми вставками прописной буквы. ИзображениеresizingMode
свойство указывает, должно ли изображение масштабироваться или размещаться рядом.Используя
animatedResizableImageNamed:capInsets:duration:
илиanimatedResizableImageNamed:capInsets:resizingMode:duration:
методы, возвращающие полученное изображение с анимацией с ненулевыми вставками прописной буквы.
Эти методы не могут быть установлены после того, как изображение создается или загружается.
Прозрачность и альфа-смешивание
Прозрачность представления изображения определяется свойствами и основного изображения и представления следующим образом:
Если Непрозрачное представление (
opaque
) флаг установлен, изображение является альфой, смешанной с цветом фона представления, и само представление непрозрачно. Альфа представления (alpha
) установка проигнорирована.Если Непрозрачное представление (
opaque
) флаг не установлен, альфа-канал для каждого пикселя (или1.0
если изображение не имеет никакого альфа-канала), умножается на Альфу представления (alpha
) установка и получающееся значение определяют прозрачность для того пикселя.
Используя автоматическое расположение с представлениями изображения
Можно создать Автоматические Ограничения макета между представлением изображения и другими элементами пользовательского интерфейса. Можно создать любой тип ограничения для представления изображения помимо ограничения базовой линии.
Вы обычно хотите, чтобы представление изображения заполнило полную ширину Вашего экрана. Чтобы гарантировать, что это происходит правильно на всех устройствах и ориентациях, можно создать Ведущее Пространство для Суперпросматривания и Конечный пробел, чтобы Суперпросмотреть ограничения и установить оба значения, равные 0
. Это гарантирует, что представление изображения остается прикрепленным к краям экрана устройства.
Для получения общей информации об использовании Автоматического Расположения с представлениями iOS, посмотрите Используя Автоматическое Расположение с Представлениями.
Создание доступных представлений изображения
Представления изображения доступны по умолчанию. Черты доступности по умолчанию для представления изображения являются Изображением, и Взаимодействие с пользователем Включило.
Для получения общей информации о создании доступных представлений iOS, посмотрите Доступные Представления Создания.
Интернационализация представлений изображения
Если Ваше представление выводит на экран только статические изображения, загруженные из Вашего комплекта приложений, интернационализация представлений изображения является автоматической. При загрузке изображений программно Вы, по крайней мере, частично ответственны за загрузку правильного образа.
Для ресурсов в Вашем комплекте приложений Вы делаете это путем указания имени в инспекторе атрибутов или путем вызова
imageNamed:
метод класса дляUIImage
получить локализованную версию каждого изображения.Для изображений, которые не находятся в Вашем комплекте приложений, Ваш код должен сделать следующее:
Определите, какое изображение загрузить способом, определенным для Вашего приложения, такого как обеспечение локализованной строки, содержащей URL.
Загрузка, которые отображают путем передачи URL или данных для правильного образа к надлежащему
UIImage
метод класса, такой какimageWithData:
илиimageWithContentsOfFile:
.
Для получения дополнительной информации посмотрите Руководство по Интернационализации и Локализации.
Отладка представлений изображения
При отладке проблем с представлениями изображения наблюдайте за этими распространенными ошибками:
Не загружая Ваше изображение корректным методом. При загрузке изображения из комплекта приложений использовать
imageNamed:
. При загрузке изображения из файла (с полным путем или URL), использоватьimageWithContentsOfFile:
.Не создание изображения с анимацией структурирует тот же размер. Это помогает Вам избежать иметь необходимость иметь дело с масштабированием, мозаичным размещением или расположением различий между кадрами.
Использование непротиворечивого масштаба оценивает за все кадры изображения с анимацией. Смешивание изображений с различными масштабными коэффициентами может произвести неопределенное поведение.
Выполнение пользовательского получения в подклассе представления изображения.
UIImageView
класс оптимизирован для рисования его изображений к дисплею.UIImageView
не вызываетdrawRect:
метод его подклассов. Если Ваш подкласс должен включать пользовательский код для прорисовки, необходимо разделить на подклассыUIView
класс вместо этого.Не включая обработку событий в подклассах, если Вам нужен он. Новые объекты представления изображения сконфигурированы для игнорирования пользовательских событий по умолчанию. Если Вы хотите обработать события в пользовательском подклассе
UIImageView
, необходимо явно изменить значениеuserInteractionEnabled
свойство кYES
true
после инициализации объекта.Не обеспечение предмасштабированных изображений, если это возможно. Например, если Вы ожидаете, что определенные большие изображения будут часто выведены на экран в уменьшенном масштаб режиме просмотра миниатюр, Вы могли бы рассмотреть хранение уменьшенных масштаб изображений в кэше миниатюры. Масштабирование изображения является относительно дорогой работой.
Не ограничение размера изображения. Рассмотрите предварительное масштабирование или мозаичное размещение больших изображений. Проект примера кода MVCNetworking (
QImageScrollView.m
) демонстрирует, как определить, на какой модели устройства на iOS Ваше программное обеспечение работает. Можно тогда использовать ту информацию, чтобы помочь Вам определить пороги размера изображения для использования при масштабировании или мозаичном размещении.Не отключая альфу, смешивающуюся кроме при необходимости. Если Вы преднамеренно не работаете с изображениями, содержащими прозрачность (получающий элементы UI, например), необходимо обычно отмечать представление как непрозрачное путем установки флажка Opaque в Инспекторе Атрибутов или установки
opaque
свойство на самом представлении.Для представлений, которые не непрозрачны, устройство должно выполнить большое ненужное вычисление, если альфа-смешивание включено, и изображение содержит альфа-канал. Это влияние производительности далее увеличено при использовании Базовых теней Анимации потому что форма тени тогда на основе содержания представления и должна быть динамично вычислена.
Чтобы узнать больше, как альфа-смешивание работает, посмотрите Смешивание Прозрачности и Альфы.
Элементы, подобные представлению изображения
Следующие элементы обеспечивают схожую функциональность для веб-представления:
Кнопка. Можно установить фоновое изображение кнопочного управления (типа
UIButtonTypeCustom
). Для получения дополнительной информации посмотрите Кнопки.Прокрутите Представление. Представление изображения обычно увеличивает масштаб содержания или вниз соответствовать размерностям представления. Если необходимо вывести на экран изображение с управляемым пользователями изменением масштаба и масштабированием, необходимо поместить то представление изображения в представлении прокрутки. Для получения дополнительной информации посмотрите Представления Прокрутки.
Пользовательские Представления. Если Вы создаете пользовательский подкласс
UIView
, можно программно нарисовать изображения вdrawRect:
метод. (Для максимальной производительности необходимо сделать это только при необходимости.) Для получения дополнительной информации, займитесь Представлениями.