0

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

4

1 回答 1

1
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.opaque, 0.0);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

其中 myView 是在我们正在创建的图像 (img) 中包含您想要的任何内容的视图。我没有为标签测试它,但它应该可以正常工作。

于 2013-06-17T20:12:36.133 回答