Справочник по IOS4
Изображения
Изображение описывается классом UIImage.
Разрешение экрана для iPhone до четвертой версии: 480×320 пикселей. После четвертой версии: 960×640 пикселей. Таким образом, приложение может иметь два набора иконок для разных разрешений (подробней см. альтернативные ресурсы).
Система автоматически уничтожает данные изображения при нехватки памяти, и загружает заново когда приложение пытается его отрисовать. Также не рекомендуется создавать изображения больше 1024x1024, кроме памяти могут возникнуть проблемы с OpenGL ES. Ограничение не касается манипуляций с изображением в коде.
// загрузка изображения из ресурса приложения UIImage *image = [UIImage imageNamed:@"chk_yes.png"]; // загрузка изображения по url UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:[NSURL URLWithString:url] ]]; // сохранить изображение в фотоальбом UIImageWriteToSavedPhotosAlbum(image, self, nil, nil); //-------------------------------------------------------- // сохранить изображение в jpg файл //вначале делаем путь к файлу (пример из программы) NSString *jpgPath = [NSString stringWithFormat: @"%@/%@.jpg", [ NSHomeDirectory() stringByAppendingPathComponent:@"Documents"], [NSString stringWithFormat: @"%d",idCompany]] ; // сохраняем [UIImageJPEGRepresentation(image, 1.0) writeToFile:jpgPath atomically:YES];
- + imageNamed: - загрузить изображение из ресурса;
- + imageWithContentsOfFile: - загрузить из файла;
- – initWithContentsOfFile: - загрузить из файла;
- + imageWithData: - создать из байтовых данных;
- – initWithData: - создать из байтовых данных;
- + imageWithCGImage: - создать из изображения в формате библиотеки Quartz;
- – initWithCGImage: - создать из изображения в формате библиотеки Quartz;
- + imageWithCGImage:scale:orientation: - предыдущее с добавлением масштабирования и смены ориентации;
- – initWithCGImage:scale:orientation:
- + imageWithCIImage: - создать из изображения в формате библиотеки Core Image;
- – initWithCIImage: - создать из изображения в формате библиотеки Core Image;
- – resizableImageWithCapInsets:
- – stretchableImageWithLeftCapWidth:topCapHeight: (устарело с пятой версии);
- imageOrientation - ориентация изображения, может принимать одно из следующих значений:
- UIImageOrientationUp - нормальная ориентация по умолчанию;
- UIImageOrientationDown - перевернутое изображение на 180 градусов;
- UIImageOrientationLeft - повернутое изображение на 90 градусов против часовой стрелки;
- UIImageOrientationRight - повернутое изображение на 90 градусов по часовой стрелке;
- UIImageOrientationUpMirrored - с зеркальным отображением по оси X;
- UIImageOrientationDownMirrored - перевернутое с зеркальным отображением по оси X;
- UIImageOrientationLeftMirrored - повернутое с зеркальным отображеним по оси Y;
- UIImageOrientationRightMirrored - повернутое с зеркальным отображеним по оси Y;
- size - размер изображения с учетом ориентации;
- scale - коэфф. масштабирования,
- CGImage - ссылка на изображение в формате библиотеки Quartz;
- CIImage - ссылка на изображение в формате библиотеки Core Image;
заклепки
Если изображение используется для масштабируемых элементов интерфейса, то ему можно определить заклепки - неизменяемая область на углах изображения при масштабировании.
До пятой версии использовались поля leftCapWidth и topCapHeight, противоположные заклепки вычислялись автоматически по формулам:
rightCapWidth = image.size.width - (image.leftCapWidth + 1); bottomCapHeight = image.size.height - (image.topCapHeight + 1);
С пятой версии рекомендуется использовать свойство capInsets типа UIEdgeInsets.
// зазгружаем изображение например скругленная рамка, // указываем какие части изображения не масштабировать imgView.image = [[UIImage imageNamed:@"bg_text.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12)];
по кадравая анимация
Есть поддержка по кадровой анимации. Кадры должны быть в одного размера и масштаба. Имена файлов содержащие отдельные кадры различаются цифровым суффиксом: image0, ..., image1024
- + animatedImageNamed:duration: - загрузка анимации из ресурса;
- + animatedResizableImageNamed:capInsets:duration: - предыдущее с возможностью указать заклепки;
- + animatedImageWithImages:duration: - создание анимации из массива изображений;
- images - массив изображений кадров, или nil;
- duration - интервал между сменой кадров, или 0.0;
графический вывод
- – drawAtPoint: - нарисовать изображение в указанной точке, определяющей левый верхний угол;
- – drawAtPoint:blendMode:alpha: - предыдущее с возможностью указать прозрачность и режим смешивания цветов:
- – drawInRect: - нарисовать изображение в указанной области;
- – drawInRect:blendMode:alpha: - предыдущее с возможностью указать прозрачность и режим смешивания цветов:
- – drawAsPatternInRect: - закрасить область указанным изображением, в системе координат по умолчанию слева направо, сверху вниз;
вспомогательные функции
В UIkit определены дополнительные функции для работы с изображением:
- UIImageJPEGRepresentation(UIImage *image,CGFloat compressionQuality) - сохранить изображение в jpg файл;
- UIImagePNGRepresentation(UIImage *image) - сохранить изображение в png файл;
- UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo) - сохранить изображение в альбом;
дополнительно
Полезное расширение класса UIImage, позволяет масштабировать, скруглять углы, работать с прозрачностью. При масштабировании ориентация изображения приводится в нормальное (UIImageOrientationUp).
No comments:
Post a Comment