【发布时间】:2016-12-12 16:29:42
【问题描述】:
我正在从 UIlablel 的 UIView 子类中的文本创建图像。 UIlablel 的文本设置在 awakeFromNib 中,并且每次应用启动时都会有所不同。图像捕获整个UIlablel 文本的唯一位置是layoutSubviews —> 由于我相信帧大小。请注意,在下面的代码中,我依赖标签父视图上的bounds。问题是layoutSubviews 被多次调用,因此该图像可能会被创建多次。我尝试在didMoveToWindow等地方抓图,但是只抓到了UIlablel的一部分文字。这是制作图像的代码:有什么想法吗?
func createImage(withText text: NSAttributedString, inParent parent: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(frame.size, false, 0)
text.draw(in: parent.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
【问题讨论】:
-
你能检查一下 parent.bounds 和 frame 的大小和来源吗?
-
保存一次UILabel中的文本,然后每次layoutSubview调用时重绘UIImage。