Swift:向图像添加文本不起作用

Posted

技术标签:

【中文标题】Swift:向图像添加文本不起作用【英文标题】:Swift: Adding text to image does not work 【发布时间】:2015-02-09 23:19:13 【问题描述】:

我正在尝试通过向其添加文本来编辑图像,但我从这篇文章中获得的代码不起作用:How to write text on image in Objective-C (ios)?

我的图像编辑代码如下所示:

func addTextToImage(image:UIImage, text:NSString, pointof: CGPoint) -> UIImage

    let font:UIFont = UIFont.boldSystemFontOfSize(12)

    let dict:NSDictionary = [NSFontAttributeName : font]

    UIGraphicsBeginImageContext(image.size)
    image.drawInRect(CGRectMake(0, 0, image.size.width, image.size.height))
    let rect: CGRect = CGRectMake(pointof.x, pointof.y, image.size.width, image.size.height)
    let color: UIColor = UIColor.whiteColor()
    text.drawInRect(CGRectIntegral(rect), withAttributes:dict)

    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage

然后我用textViewDidChange的方法给图片添加文字,但是还是不行:

func textViewDidChange(textView: UITextView)
    backgroundImage.image = addTextToImage(imageToView, text: textViewer.text, pointof: CGPointMake(0, 0))

任何关于我做错了什么的建议将不胜感激。

【问题讨论】:

首先我们需要知道哪里出了问题。 “不起作用”没有帮助。你的代码给出什么结果?是否调用了 textViewDidChange? newImage 真的创建了吗? @rdelmar 什么也没发生,正在调用 textViewDidChange,因此我认为它正在被创建。 不要假设。在“return newImage”之前添加一个打印语句,并查看 newImage 是否为非 nil。 @rdelmar 好的,我这样做了,两个函数都被调用并且创建的新图像不为空。 是的,我把它放在我最后的评论中。 【参考方案1】:
func addTextToImage(drawText text: NSString, inImage image: UIImage, atPoint point: CGPoint) -> UIImage

    let textColor = UIColor.blue

    let textFont = UIFont(name: "ChalkboardSE-Regular", size: 26)!

    let scale = UIScreen.main.scale
    UIGraphicsBeginImageContextWithOptions(image.size, false, scale)

    let textFontAttributes = [
        NSFontAttributeName: textFont,
        NSForegroundColorAttributeName: textColor,
        ] as [String : Any]

    image.draw(in: CGRect(origin: CGPoint.zero, size: image.size))

    let rect = CGRect(origin: point, size: image.size)
    text.draw(in: rect, withAttributes: textFontAttributes)

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage!

【讨论】:

以上是关于Swift:向图像添加文本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 图像上的cornerRadius 不起作用

UILabel 文本对齐不起作用(Swift 4)

带有圆角和阴影的 Swift uiview 不起作用

UIImageView 中的 Swift 4 UIButton 操作不起作用

“图像文字”命令在 Xcode 中不起作用

如果 UIControl 中的 SVG 图像,点击不起作用