我不知道如何将 UILabel 转换为 UIImage.[swift] [重复]

Posted

技术标签:

【中文标题】我不知道如何将 UILabel 转换为 UIImage.[swift] [重复]【英文标题】:I do not know how to convert UILabel to UIImage.[swift] [duplicate] 【发布时间】:2017-12-12 02:34:06 【问题描述】:

我正在使用 UITextField。 我在 UITextField 中使用键盘输入字符。 当我点击键盘上的返回按钮时,我会在 UILabel 中显示句子。 在 UILabel 中显示字符后,我想从 UILabel 转换为图像。 但是,我不知道如何从 UILabel 转换为图像。 有没有更好的办法?

@IBOutlet var messageLabel: UILabel!
@IBOutlet var messageField: UITextField!

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    messageLabel.text = messageField.text

    //Here I would like to convert from UILabel to image.
    //UILabel → image


【问题讨论】:

首先,您的意思是:“我在 UILabel 中的 UITextField 上显示字符。” ? 对不起。我将纠正解释的几句话。 您问题中的代码与将标签转换为图像有什么关系? @rmaddy 谢谢。我想从 UILabel 转换为图像。 @ginger 我知道你在问什么。我在问您问题中的当前代码与您的实际问题有什么关系?您的实际问题(将 UILabel 转换为 UIImage)与文本字段没有任何关系。 【参考方案1】:

您可以使用UIGraphicsBeginImageContextWithOptions 开始一个Image 上下文,然后您可以使用UIView 方法func drawHierarchy(in rect: CGRect, afterScreenUpdates afterUpdates: Bool) -> Bool 在其上绘制标签内容:


let label = UILabel(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 50)))
label.text = "***"
label.backgroundColor = UIColor.red.withAlphaComponent(0.2)
label.textColor = .blue
label.textAlignment = .center
label.font = UIFont.boldSystemFont(ofSize: 24)

UIGraphicsBeginImageContextWithOptions(label.bounds.size, false, 0)
label.drawHierarchy(in: label.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

【讨论】:

感谢您给我的好建议。【参考方案2】:

您可以创建一个新的 UIImage 类型的 IBOutlet,messageImage,然后在其中添加您想要的图像。当你想转换标签时,使用 isHidden 函数隐藏 messageLabel 并显示 messageImage。

messageLabel.isHidden = true
messageImage.isHidden = false

【讨论】:

感谢您的建议。但是,我不想隐藏 UILabel 的句子。 这与将 UILabel 转换为 UIImage 有何不同?无论哪种方式,UILabel 都不再显示/存在。 @sn8wman 这两个甚至一点也不相似。问题是询问如何根据动态标签的内容创建图像。

以上是关于我不知道如何将 UILabel 转换为 UIImage.[swift] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将utf-8文本转换为UILabel

如何布局可以有无限行数的UILabel

如何将 NSString 对象中的字符转换为 UILabel 对象?

如何让 UIPickerview 自动更新 UILabel

我有一个计算到期日期的代码,但我不知道如何将其转换为日期格式

将UILabel子类从Objective-C转换为Swift