【问题标题】:Draw text and add to a UIImage iOS 5/6绘制文本并添加到 UIImage iOS 5/6
【发布时间】:2012-09-24 19:46:48
【问题描述】:

我有一个文本框,我希望将书面文本添加到 UIImage 中。

如何将 NSString 绘制到 UIImage?

我搜索了很多示例,但没有一个有效。 Xcode 只是给了我很多错误。

简单地说,我想将 NSString 绘制到 UIimage。 UIImage 应与预定义的 UIImageView 大小相同,并位于中心位置。

有什么想法吗?

【问题讨论】:

    标签: ios uiimage core-graphics draw


    【解决方案1】:

    我认为解决方案就在这里..我在我的一个应用程序中使用了这种方法 这里 lbltext 是我标签的对象。此方法使用给定文本创建新图像并返回带有文本的新图像对象。

    -(UIImage *) drawText:(NSString*) text inImage:(UIImage*)image atPoint:(CGPoint)point 
    {
        UIFont *font = lblText.font;
        UIGraphicsBeginImageContext(iv.frame.size);
        [image drawInRect:CGRectMake(0,0,iv.frame.size.width,iv.frame.size.height)];
        CGRect rect = CGRectMake(point.x,point.y,lblText.frame.size.width, lblText.frame.size.height);
        [lblText.textColor set];
        [text drawInRect:CGRectIntegral(rect) withFont:font]; 
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
    }
    

    在您的以下评论中,您已经通过 iv.center 作为一个点.. 像这样手动尝试

    CGPoint point;
    point.x=30; // dynamicaly just for example lblText.frame.origin.x;
    point.y=40; //lblText.frame.origin.y;
    

    你必须像这样调用上面的方法......

    UIImage *img = [self drawText:@"Test String" inImage:originalImage atPoint:point];
    

    这里,img 是 UIImage 的另一个实例,用于存储带有文本的新图像...调用此方法后,请使用 img imager 供您进一步使用..

    例如...

    [newimageviewObj setImage:img];
    

    希望对你有帮助

    【讨论】:

    • 谢谢,我一回家就试试 :)
    • 不能让它工作。猜我做错了什么。我在做:[self drawText:@"teest" inImage:testImage atPoint:iv.center]; testImage 是一个实例变量 UIImage *testImage。 iv 是我的 ImageView 而 lblText 是我认为的 UILabel。
    • @EspenBirk 我已经编辑了我的答案,请检查一下......告诉我你有什么......
    • @P R J 现在完美运行了!非常感谢 PRJ :D 我尝试像您描述的那样手动设置 CGPoint,并且正要问您如何在 UIImageView 中将其居中,但后来我看到您已经编写了它。如果我删除手动 CGPoint,它将位于我的 UIImageView 的中心。非常感谢:)
    【解决方案2】:

    UIImage 不是 UIView 的子视图,所以你不能给它添加子视图。 NSString 也不是 UIView 的子视图。如果你想在屏幕上显示东西,它们应该继承自 UIView。

    所以试试这个:

    创建一个 UIImageView - 将其图像属性设置为您的 UIImage 实例。

    创建一个 UILabel - 将其文本属性设置为您的 NSString。

    将 UILabel 添加为 UIImageView 的子视图。

    最后将您的 UIImageView 添加到您当前的视图控制器视图中。

    【讨论】:

    • 他询问绘图,没有什么能阻止他在创建的 UIImage 上绘制一些文本,然后将其添加到 UIImageView。
    • 当然,你是对的,但我仍然会继续回答,因为它提供了一个合理的选择。
    • 我现在找到了一个工作代码。但它看起来像是一张放大后的低分辨率图像。我尝试添加带有文本的子视图,但我不知道如何将该子视图添加到 uiimage 中
    【解决方案3】:

    Emm,这里有一些想法。 我认为一种简单的方法是这样的:

    1. 将aUIImageView放在aView上;
    2. 在aView上添加一个UITextView;
    3. 从 aView 获取屏幕截图;

    这可能工作正常。

    此外,这可能会带来屏幕截图可能不清楚的问题。 然后,在 step1 和 step2 之后,我们可以通过 UIGraphics 获得新的图像。 (在这里,我们已经知道文本应该在图像上的位置,这应该没问题。)

    PS:有些图像可能没有像 CGImage 这样的属性,因此需要 CGImage。所以,改造一下吧。

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2012-01-09
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2016-07-01
      • 1970-01-01
      相关资源
      最近更新 更多