【发布时间】:2011-11-12 08:41:04
【问题描述】:
背景
我正在使用来自 Chapter 8, Example 14 — Resize and Rotate 的 Erica Saduns Cookbook 示例来明显地调整和旋转 UIImageView。
查看层次结构
1.) 条纹背景视图。
2.) 可以调整大小和旋转的交互式视图。
3.) 带有透明部分的叠加图像。此视图的 y 轴从 128 开始,大小为 768x768。
4.) 高于和低于 3,是 2 个高度为 128 的视图。
******参见下面的图片示例****
问题
目前,我可以使用[[[self view] layer] renderInContext:将整个视图的图层保存到照片库中,并且#2的转换是正确的。但是,我需要一种方法来保存仅包含 #2 和 #3 的 768x768 (照片示例中的石灰绿色) 帧,包括 #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 中勾勒出的图像部分,同时保留用户的转换。
【问题讨论】:
标签: ios ipad core-graphics calayer layer