2012-11-05 79 views
0

我有这个功能,我在我的应用程序中使用了一个小的UIView的屏幕截图,我的问题是我想添加到此图像中位于我的图像文件夹中的背景。我想要添加的背景不会显示在当前视图上,我只是想在保存图像之前以编程方式将其粘贴到屏幕截图图像后面。可能吗?将图像粘贴到图像上

(我不想创建它,比背景的新视图以添加屏幕显示图像和比再次参加截屏。这太过分了)

比方说,这是

______ 
/ \ 
/  \ 
\  /
\______/ 

这是与图像一起的背景图像:

_________________ 
|     | 
|  ______  | 
| / \  | 
| /  \ | 
| \  / | 
| \______/  | 
|     | 
|_________________| 

这是我的代码:

已拍摄的图像
- (void)takeScreenShotAndSaveIt:(CGPoint)center 
{ 
    // IMPORTANT: using weak link on UIKit 
    if(UIGraphicsBeginImageContextWithOptions != NULL) 
    { 
     UIGraphicsBeginImageContextWithOptions(smallview.frame.size, NO, 0.0); 
    } else { 
     UIGraphicsBeginImageContext(smallview.frame.size); 
    } 

    [smallview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    // Save image to iPhone documents directory 
    NSData * imgData = [[NSData alloc] initWithData:UIImagePNGRepresentation(viewImage)]; 
    NSString * filename = [NSString stringWithFormat:@"MeasureScreenShot.png"]; 
    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString * documentsDirectory = [paths objectAtIndex:0]; 
    NSString * path = [documentsDirectory stringByAppendingPathComponent:filename]; 
    [imgData writeToFile:path atomically:YES]; 
} 

非常感谢!

回答

1

如果我理解正确你正在尝试做的,试试这个:

- (void)takeScreenShotAndSaveIt:(CGPoint)center 
{ 
    ... 
    [backgroundImageView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    [smallview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    ... 

其中backgroundImageView是包含您的背景图像的UIImageView的。您只需在相同的上下文中呈现这两个视图。如果您喜欢将背景作为图像而不是视图处理,则可以使用:

[bckImage drawAtPoint:CGPointZero blendMode:kCGBlendModeNormal alpha:1.0]; 
+0

伟大的人!非常感谢你 - 它非常棒! –