在显示之前将 uiview 转换为 uiimage
Posted
技术标签:
【中文标题】在显示之前将 uiview 转换为 uiimage【英文标题】:Convert uiview to uiimage before its displayed 【发布时间】:2018-04-19 15:32:27 【问题描述】:我正在尝试在特定坐标处将 UIView 添加到谷歌地图,据我所知,最简单的方法是将其转换为图像并将其添加为 GMSMarker
。我找到了一个不错的扩展,可以为我将视图转换为图像:
extension UIImage
convenience init(view: UIView)
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.init(cgImage: (image?.cgImage)!)
问题是视图尚未渲染,因此其框架为零。该视图包含的文本仅在初始化时长度会有所不同,因此我无法为其设置框架。
任何帮助将不胜感激
谢谢
【问题讨论】:
【参考方案1】:该扩展程序运行良好(经过测试),因此它的全部内容都与渲染后的调用有关。在渲染发生后尝试 viewDidAppear 或在函数中调用它。
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
newImageView.image = UIImage(view: self.topView)
如果这不起作用,您可以分享您调用扩展程序的代码吗?
【讨论】:
这是我的问题,我正在测试我的实现并在视图控制器的 init 中调用它,而不是在视图加载并且 api 请求成功返回之后更实际地调用它。谢谢 @Wazza,如果这有帮助,将不胜感激选择它作为解决方案。谢谢。 抱歉完全忘记了,太兴奋了 没问题!祝你好运!以上是关于在显示之前将 uiview 转换为 uiimage的主要内容,如果未能解决你的问题,请参考以下文章
在不先显示 UIView 的情况下将 UIView 转换为 UIImage?