如何在uiimage的中心绘制文本? [英] how to draw text in center to uiimage?

查看:22
本文介绍了如何在uiimage的中心绘制文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将我的文字 Sold Out 设置在 UIimage 的中心.但它不在中心.

I want to set my text Sold Out to the center in UIimage. but it not in center .

func textToImage(drawText text: NSString, inImage image: UIImage, atPoint point: CGPoint) -> UIImage {

    let textColor = UIColor.white
    let textFont = UIFont(name: "Helvetica Bold", size: 32)!

    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)
    let rect = CGRect(origin: CGPoint(x:(image.size.width/2), y: (image.size.height/2)), size: image.size)

    text.draw(in: rect, withAttributes: textFontAttributes)

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage!
}

调用函数

 imageViewSoldStatus.image = textToImage(drawText: "Sold out", inImage: UIImage(named:"soldout.png")!, atPoint: CGPoint(x: 5.0, y: 5.0))

我花了很长时间来解决这个问题,但我找不到任何解决方案.

I have spent of very long time to solve this problem but I could not find any solution.

红旗我的形象

上面是我得到的屏幕.下面是我想要实现的设计.

above is the screen I obtained. below is the design that I want to achieve.

更新

Marie Dm 回答使用!它是文本对齐中心但不是图像中心

Marie Dm answerd used! it is text align center but not image center

在此处输入图片说明

推荐答案

试试这个:

func textToImage(drawText text: NSString, inImage image: UIImage) -> UIImage? {
    //draw image first
    UIGraphicsBeginImageContext(image.size)
    image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    
    //text attributes
    let font=UIFont(name: "Helvetica-Bold", size: 32)!
    let text_style=NSMutableParagraphStyle()
    text_style.alignment=NSTextAlignment.center
    let text_color=UIColor.white
    let attributes=[NSFontAttributeName:font, NSParagraphStyleAttributeName:text_style, NSForegroundColorAttributeName:text_color]

    //vertically center (depending on font)
    let text_h=font.lineHeight
    let text_y=(image.size.height-text_h)/2
    let text_rect=CGRect(x: 0, y: text_y, width: image.size.width, height: text_h)
    text.draw(in: text_rect.integral, withAttributes: attributes)
    let result=UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return result
}

这篇关于如何在uiimage的中心绘制文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆