Задний план
Я использую пример поваренной книги Эрики Садун из Chapter 8, Example 14 — Resize and Rotate
, чтобы явно изменить размер и повернуть UIImageView
.
Посмотреть иерархию
1.) полосатый фон.
2.) интерактивный вид, который можно изменять и вращать.
3.) наложенное изображение с прозрачной частью. этот вид начинает свою ось Y с 128 и имеет размер 768x768.
4.) выше и ниже 3, есть 2 вида 128 в высоту.
******См. пример фото ниже****
Проблема
В настоящее время я могу сохранить весь слой вида в библиотеке фотографий, используя [[[self view] layer] renderInContext:
, и преобразования #2 верны. Однако мне нужен способ сохранить кадр 768 x 768 (светло-зеленый на примере фотографии), содержащий только №2 и №3. , включая преобразования #2. Если я использую [[#2 layer] renderInContext:
, я получаю исходное изображение и никаких преобразований. (см. # справку на снимке экрана ниже.
Код
CGSize deviceSpec;
if ( IDIOM == IPAD ) { deviceSpec =CGSizeMake(768,768); } else { deviceSpec =CGSizeMake(320,480); }
if ( scale > 1.5 ) {
UIGraphicsBeginImageContextWithOptions(deviceSpec, NO, scale);
} else {
UIGraphicsBeginImageContext( deviceSpec );
}
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[stripedBg layer] renderInContext:ctx]; //#1
CGContextSaveGState(ctx);
CGContextConcatCTM(ctx, [[interactiveImage layer] affineTransform]);
//CGContextTranslateCTM(ctx, interactiveImage.frame.origin.x,interactiveImage.frame.origin.y-128);
[[interactiveImage layer] renderInContext:ctx]; // #2
CGContextRestoreGState(ctx);
[[overlayImage layer] renderInContext:ctx]; // #3
UIImage * draft = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Пример фото
Мне нужна только часть изображения, обведенная LIME GREEN, при сохранении преобразований, сделанных пользователем.