我想抓取UIView
并保存为图片。这是我的代码
+ (UIImage *)captureView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
// CGContextRef context = UIGraphicsGetCurrentContext();
// CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);
// CGContextFillRect(context, view.bounds);
UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshotImage;
}
工作正常。但我遇到一个问题:我无法更改该图像的背景。它总是得到黑色背景。 那么,如何改变背景?
感谢。
答案 0 :(得分:0)
cellForRowAtIndexPath
它给出了视图的实际颜色..如果你的视图的背景颜色是清晰的颜色或黑色,图像背景颜色将是黑色
答案 1 :(得分:0)
您无法更改UIImage的背景的原因是因为UIImage不具有背景属性。要添加可以更改颜色的背景,您必须自己创建一个自定义UIView,UIImage可以放在其上。例如,假设你想要创建一个返回具有你选择背景的图像的函数:
- (UIImage* )setBackgroundImageByColor:(UIColor *)backgroundColor withFrame:(CGRect )rect{
// tcv - temporary colored view
UIView *tcv = [[UIView alloc] initWithFrame:rect];
[tcv setBackgroundColor:backgroundColor];
// set up a graphics context of button's size
CGRectGSize gcSize = tcv.frame.size;
UIGraphicsBeginImageContext(gcSize);
// add tcv's layer to context
[tcv.layer renderInContext:UIGraphicsGetCurrentContext()];
// create background image now
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
// [tcv release];
}