swift - 在显示之前将 uiview 转换为 uiimage

标签 swift google-maps

我正在尝试在特定坐标处将 UIView 添加到谷歌地图,据我所知,最简单的方法是将其转换为图像并将其添加为 GMSMarker .我找到了一个很好的扩展,可以为我将 View 转换为图像:

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)!)
    }
}

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

任何帮助将不胜感激

谢谢

最佳答案

该扩展程序运行良好(对其进行了测试),因此一切都与呈现后的调用有关。尝试 viewDidAppear 或在渲染发生后在函数中调用它。

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

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

关于swift - 在显示之前将 uiview 转换为 uiimage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924928/

相关文章:

ios - 如何更改 Swift 3 中 UISearchBar "cancel"按钮的颜色?

ios - Xcode 上的 Swift - 具有多个值的数组索引

ios - 如果像素是透明的,如何制作不响应触摸的 SKSpriteNode?

javascript - React - 数组迭代 : "' l' is not defined"error when an array is iterated

swift - 锁定按钮直到第二天

ios - swift 2 和 3 之间的区别?如何在另一个类中使用所有类的方法?

android - 如何在 Android 中从经纬度或 Google map 获取海拔高度?

javascript - Google Maps v3 - 我可以确保每次都能顺利平移吗?

javascript - 如何在谷歌地图的infowindows中添加媒体文件(视频)?

java - 如何在调用 Intent 时保持 MainActivity 运行?