Главная » iPhone » Объект изображения iPhone

0

Класс uiimage инкапсулирует само изображение. Он может использоваться для прорисовки напрямую внутри вида или выступать в роли контейнера объекта в более мощных классах видов изображений. Данный класс предоставляет методы для загрузки изображения из различных источников, задания ориентации изображения на экране и предоставления информации об этом изображении. Для простой графики ui image может использоваться в процедурах прорисовки вида для визуализации изображений и узоров. Это является своего рода посредническими услугами между более крупными, полными классами видов изображений и работой с низкоуровневыми графическими процедурами, такими как буферы Core Surface.

Объект ui image может быть создан из файла, взят из копии буфера Core Surface, или даже импортирован из фонового рисунка рабочего стола. Существуют как статические методы, так и экземпляры методов; поэтому на изображения можно ссылаться, их можно кэшировать или порождать экземпляры объектов новых изображений в зависимости от потребностей вашего приложения.

Статические методы

Самый простой способ сослаться на изображение — это воспользоваться статическими методами ui image. Вместо того чтобы управлять экземплярами изображений, статические методы предоставляют прямой интерфейс к общим объектам, расположенным во внутреннем кэше памяти оболочки. Это помогает уменьшить беспорядок в вашем приложении и устраняет необходимость в проведении чистки. Статические методы существуют для получения доступа к изображениям напрямую из вашей программной папки, используя для этого путь файла, или из фонового рисунка рабочего стола.

? applicationlmageNamed— метод, который является наиболее предпочтительным для использования с изображениями, относящимися к приложению, поскольку всегда существует вероятность того, что пользователь переименует ваше приложение или установит его в другую папку, разрушив тем самым прямые пути к файлам. Чтобы использовать этот метод, укажите только имя файла. Платформа сама выяснит, куда установлено приложение, и загрузит нужное изображение: Ullmage *image = [ Ullmage applicationlmageNamed: @"image.png" ],;

?   imageAtPath— если нужное изображение находится вне папки вашего приложения (например, изображения, сделанные фотоаппаратом), то сослаться на это изображение можно с помощью прямого пути:

Ullmage *image = [ Ullmage imageAtPath: @’7path/to/image.png" J;

?   default Desktop image — метод, применяемый для возврата ссылки на фоновый рисунок рабочего стола, который задается в приложении Settings. Мы активно его используем в нашем примере, поскольку он освобождает вас от необходимости загружать изображения для использования в примерах:

Ullmage *image = [ Ullmage defaultDesktopImage ];

Экземпляры методов

Помимо статических ссылок изображения также могут быть подвергнуты обработке как объекты, размещенные в вашем приложении.

?   initwithContentsOfFile. Наиболее распространенный подход— это предоставить прямой путь к файлу изображения:

Ullmage *image = [ [ Ullmage alloc ] initwithContentsOfFile: @"/path/to/image.png"

Заданный метод может быть также вызван с аргументом кэша, указывая тем самым оболочке кэшировать изображение при его загрузке так, чтобы его не нужно было многократно считывать с диска:

Ullmage *image = [ [ Ullmage alloc ]

initwithContentsOfFile: @"/path/to/image.png" cache: YES

];

?   initwithCoreSurfaceBuffer. Если ваше приложение использует платформу Core Surface для создания видеобуфера CoreSurfaceBuffer (рассмотренного в главе 5), то объект ui image может быть создан как мгновенная копия текущего буфера:

Ullmage *image = [ [ Ullmage alloc ]

initwithCoreSurfaceBuffer: screenSurface

J;

Отображение изображения

Объекты видов имеют внутренние процедуры прорисовки, которые вызываются, когда вызываются их методы drawRect. В отличие от других классов изображений uiimage не может быть прикреплен напрямую к объекту вида как подвид. Вместо этого классы, порожденные от uiview, могут подменять их методы drawRect для включения вызова методов прорисовки объекта изображения.

Метод drawRect объекта вида вызывается всякий раз, когда необходимо визуализировать часть его окна. Чтобы визуализировать содержимое uiimage внутри этого окна, вызовите метод drawlPartimageinRect объекта:

- (void)drawRect:(CGRect)rect { CGRect myRect;

CGSize imageSize = [ image size ];

myRect.origin.x = 0; myRect.origin.у = 0; myRect.size.width = imageSize.width; myRect.size.height = imageSize.height; [ image drawlPartimageinRect: myRect ];

}

Будьте осторожны и не размещайте какие-либо новые объекты внутри метода drawRect, поскольку он вызывается каждый раз, когда необходимо перерисовать окно.

Вывод на экран узоров

Если изображение является узором, то оно может повторяться в пределах всей области вида с помощью другого метода, предоставляемого в классе

UIIMage — drawAsPatternlnRect: [ image drawAsPatternlnRect: rect ];

Этот метод повторяет указанное изображение в пределах отображаемого фрейма.

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии