在 UIImage 上绘制文本

Posted

技术标签:

【中文标题】在 UIImage 上绘制文本【英文标题】:Draw text on UIImage 【发布时间】:2020-10-07 02:30:55 【问题描述】:

所以我希望这里有人以前处理过这个问题并可以指导我。我想要做的是在图像上绘制一些文本。我的问题是图像可以有很多不同的大小,以至于文本要么很大要么很小。我发现的所有内容都说要选择一个字体大小,它会给我矩形的大小来绘制它。这对我不起作用,我想计算矩形的大小,并找出正确的字体大小以适合该矩形。有谁知道我如何做到这一点?

在此先感谢,感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果使用 UILabel 将文本添加到 UIImage 中,请考虑 Autoshrink 功能。您需要根据示例图像的宽度定义最大字体大小。这是一个示例代码。

func addTextToImage(image: UIImage, text: String) -> UIImage? 
        
        let imageView = UIImageView(image: image)
        imageView.backgroundColor = UIColor.clear
        imageView.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)

        let label = UILabel(frame: CGRect(x: 0, y: 0, width: image.size.width, height: 45.0))
        label.backgroundColor = UIColor.clear
        label.textAlignment = .center
        label.textColor = UIColor.black
        label.text = text
        
        label.font = UIFont.systemFont(ofSize: 25)
        label.numberOfLines = 1
        label.adjustsFontSizeToFitWidth = true


        UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, 0)
        imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
        label.layer.render(in: UIGraphicsGetCurrentContext()!)
        let imageWithText = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return imageWithText
     

这是输出:

【讨论】:

以上是关于在 UIImage 上绘制文本的主要内容,如果未能解决你的问题,请参考以下文章

将 NSString 绘制到 UIImage

绘制文本并添加到 UIImage iOS 5/6

如何在中心绘制文字到uiimage?

使用 Core Graphics 在 UIImage 上绘制矩形

将文本添加到 UIImage ......错误的地方

在 UIImage 上绘制另一个图像 -