因此,我正在处理的应用程序允许用户编写文本,应用程序将该文本转换为单独的UILabel(一个仅包含文本的UILabel,另一个与文本宽度相同的UILabel,但具有透明颜色背景)。我想在背景中将所有的uilabels与UIImage结合起来创建一个新的UIImage。
到目前为止,我有以下代码,但它不会产生任何实际结果,并且会喜欢任何人对这个问题的帮助:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 416), NO, 0.0);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[_imgViewFinal.layer renderInContext:ctx];
CGContextSaveGState(ctx);
for (int i = 0; i < _allLabels.count; i++) {
UILabel *tempLabelBg = [_allBgs objectAtIndex:i];
CGContextTranslateCTM(ctx, tempLabelBg.frame.origin.x, tempLabelBg.frame.origin.y);
CGContextSaveGState(ctx);
[tempLabelBg.layer renderInContext:ctx];
CGContextRestoreGState(ctx);
UILabel *tempLabelText = [_allLabels objectAtIndex:i];
[tempLabelText drawTextInRect:tempLabelText.frame];
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
NSData *imgData = UIImageJPEGRepresentation(image, 1.0);
UIImage * imagePNG = [UIImage imageWithData:imgData];
UIGraphicsEndImageContext();
*我知道drawTextInRect不使用我创建的contextref。我不确定如何将文本绘制到上下文中。我不认为我正在使用CGContextSave和Restore。
答案 0 :(得分:1)
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.opaque, 0.0);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
其中myView是我们创建的图像(img)中你想要的任何视图..我没有测试它的标签,但它应该可以正常工作。