因此,我正在开发的应用程序允许用户编写文本,并且该应用程序将该文本转换为单独的 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。