更改背景颜色UIImage

时间:2015-08-20 07:04:16

标签: ios objective-c uiimage uigraphicscontext

我想抓取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;
}

工作正常。但我遇到一个问题:我无法更改该图像的背景。它总是得到黑色背景。 那么,如何改变背景?

感谢。

2 个答案:

答案 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];
}