如何将 UIImage 和 UILabel 合并为一张图片并保存

How to combine UIImage and UILabel into one image and save(如何将 UIImage 和 UILabel 合并为一张图片并保存)
本文介绍了如何将 UIImage 和 UILabel 合并为一张图片并保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 2 个 UILabel 和 2 个图像需要合并到一个 UIImage 中保存.

I have 2 UILabels and 2 images that i need to merge into a single UIImage to save.

我知道我可以通过屏幕截图来做到这一点,但我的主图像是圆形的,所以如果我把它矫正,它仍然会显示出锐利的边缘.

I know I could do it with screen shots but my main image is rounded so if I rect it, it will still show the sharp edge.

我可以这样做来合并图像:

I can do this to combine the images :

//CGSize newImageSize = CGSizeMake(cropImage.frame.size.width, cropImage.frame.size.height);
CGSize newImageSize = CGSizeMake(480, 320);
NSLog(@"CGSize %@",NSStringFromCGSize(newImageSize));

UIGraphicsBeginImageContextWithOptions(newImageSize, NO, 0.0); //retina res
[self.viewForImg.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

NSData *imgData =  UIImageJPEGRepresentation(image, 0.9); //UIImagePNGRepresentation ( image ); // get JPEG representation
UIImage * imagePNG = [UIImage imageWithData:imgData]; // wrap UIImage around PNG representation

UIGraphicsEndImageContext();
return imagePNG;

但不确定如何在 UILabel 中添加.

but not sure how to add in the UILabel.

非常感谢任何回复.

推荐答案

使用 [myLabel.layer renderInContext:UIGraphicsGetCurrentContext()]; 在当前上下文中绘制.

Use [myLabel.layer renderInContext:UIGraphicsGetCurrentContext()]; to draw in current context.

例如:-

    UIGraphicsBeginImageContextWithOptions(newImageSize, NO, 0.0); //retina res
    [self.viewForImg.layer renderInContext:UIGraphicsGetCurrentContext()];
    [myLabel.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

根据您的评论,如果您想在特定框架中绘制此内容,请按以下步骤操作,

Based on your comments, if you want to draw this in a particular frame do it as follows,

[myLabel drawTextInRect:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)];

如果你想给背景上色,试试这个,

If you want to color the background, try this,

CGRect drawRect = CGRectMake(rect.origin.x, rect.origin.y,rect.size.width, rect.size.height); 
CGContextSetRGBFillColor(context, 100.0f/255.0f, 100.0f/255.0f, 100.0f/255.0f, 1.0f); 
CGContextFillRect(context, drawRect);

或者你可以检查这个问题​​Setting A CGContext Transparent Background.

or you can check this question Setting A CGContext Transparent Background.

这篇关于如何将 UIImage 和 UILabel 合并为一张图片并保存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Get an event when UIBarButtonItem menu is displayed(显示UIBarButtonItem菜单时获取事件)