通过单击按钮将文本放在图像上
Posted
技术标签:
【中文标题】通过单击按钮将文本放在图像上【英文标题】:Putting text on image with click of a button 【发布时间】:2016-01-25 18:31:12 【问题描述】:因此,当我调用 IBAction 时,我想将某些文本字段中的文本添加到图像中,以便使用图像某些位置的字段中的文本创建新图像。我什至不知道从哪里开始,所以我无法提供我拥有的任何代码,抱歉。任何帮助表示赞赏。
【问题讨论】:
听起来你应该在你的 UIImageView 上放一个 UILabel。 【参考方案1】:正如 MSU_Budog 已经提到的,你只需在 imageView 上添加一个标签。然后你将 imageView 传递给这个方法:
- (UIImage *)getScreenShotFromView:(UIView*)view
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
并保存图像或将 imageView 中的图像替换为图像或对新图像执行任何您想要的操作。
【讨论】:
@maddy 也许,但这是我能想到的最简单的方法,而且他似乎没有那么有经验。这里raywenderlich.com/50151/text-kit-tutorial 是另一种方法【参考方案2】:你也可以试试这种方式,不用给视图加标签,而是用一张图片和图片上的文字重新绘制uiview。稍后拍下视图的快照:
- (void)drawTextOnViewWithFrame: (CGRect)frame
//// General Declarations
CGContextRef context = UIGraphicsGetCurrentContext();
//// Image Declarations
UIImage * img = [UIImage imageNamed: @"your-image.png"];
//// Rectangle Drawing
UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(0, 0, 510, 888)];
CGContextSaveGState(context);
[rectanglePath addClip];
[img drawInRect: CGRectMake(0, 0, img.size.width, img.size.height)];
CGContextRestoreGState(context);
//// Text Drawing
CGRect textRect = CGRectMake(x,y,w,h);
NSString* textContent = @"Hello, World!"; //Text to draw
NSMutableParagraphStyle* textStyle = NSMutableParagraphStyle.defaultParagraphStyle.mutableCopy;
textStyle.alignment = NSTextAlignmentLeft;
NSDictionary* textFontAttributes = @NSFontAttributeName: [UIFont systemFontOfSize: UIFont.labelFontSize], NSForegroundColorAttributeName: UIColor.blackColor, NSParagraphStyleAttributeName: textStyle;
CGFloat textTextHeight = [textContent boundingRectWithSize: CGSizeMake(textRect.size.width, INFINITY) options: NSStringDrawingUsesLineFragmentOrigin attributes: textFontAttributes context: nil].size.height;
CGContextSaveGState(context);
CGContextClipToRect(context, textRect);
[textContent drawInRect: CGRectMake(CGRectGetMinX(textRect), CGRectGetMinY(textRect) + (CGRectGetHeight(textRect) - textTextHeight) / 2, CGRectGetWidth(textRect), textTextHeight) withAttributes: textFontAttributes];
CGContextRestoreGState(context);
【讨论】:
以上是关于通过单击按钮将文本放在图像上的主要内容,如果未能解决你的问题,请参考以下文章