通过单击按钮将文本放在图像上

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);



【讨论】:

以上是关于通过单击按钮将文本放在图像上的主要内容,如果未能解决你的问题,请参考以下文章

通过按钮将矩形绘制到画布上

如何将图像放在 Matlab uicontrol 按钮上?

如何通过单击选项卡来更改操作栏菜单按钮

通过单击 Flutter 中的按钮,使用列表中的数据构建新容器

通过单击按钮交替更改圆形按钮背景和文本

通过鼠标单击将文本复制到 swf 中?