【问题标题】:Convert uiview to uiimage before its displayed在显示之前将 uiview 转换为 uiimage
【发布时间】: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)!)
    }
}

问题是视图尚未渲染,因此其框架为零。该视图包含的文本仅在初始化时长度会有所不同,因此我无法为其设置框架。

任何帮助将不胜感激

谢谢

【问题讨论】:

    标签: swift google-maps


    【解决方案1】:

    该扩展程序运行良好(经过测试),因此它的全部内容都与渲染后的调用有关。在渲染发生后尝试 viewDidAppear 或在函数中调用它。

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        newImageView.image = UIImage(view: self.topView)
    }
    

    如果这不起作用,您可以分享您调用扩展程序的代码吗?

    【讨论】:

    • 这是我的问题,我正在测试我的实现并在视图控制器的 init 中调用它,而不是在视图加载并且 api 请求成功返回之后更实际地调用它。谢谢
    • @Wazza,如果这有帮助,将不胜感激选择它作为解决方案。谢谢。
    • 抱歉完全忘记了,太兴奋了
    • 没问题!祝你好运!
    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 2018-01-09
    • 2011-07-25
    • 2012-12-25
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多