【问题标题】:Convert UIView to UIImage Swift 3将 UIView 转换为 UIImage Swift 3
【发布时间】:2018-01-09 18:29:52
【问题描述】:

我正在开发将UIView 转换为UIImage 的扩展程序,但我遇到了一个奇怪的问题,即我能够在iOS 模拟器中获得正确的图像,但在真实设备中却得到黑色图像。下面是我的代码

extension UIView {
func screenshotImage() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0);
    self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
    let screenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenShot!
}
}

谁能解释我做错了什么,我无法在真实设备中获得正确的图像?

编辑

观察:

每当我在模拟器中将 UIView 传递给此扩展程序时,我都会获得该视图的完美图像

每当我在真实设备中将 UIView 传递给此扩展程序时,我都会得到一个完全黑色的图像,而不是 UIView 中的元素,这与模拟器结果不同。

【问题讨论】:

  • 请查看here,我想你已经找到答案了。
  • 具体告诉我们您的代码如何未能按照您的意愿行事。你得到了什么错误,或者结果不是你想要的?
  • @DuncanC 我已经编辑了我的问题并添加了我的观察结果。如果还不清楚,请告诉我

标签: ios iphone swift3 uiview uiimage


【解决方案1】:
extension UIImage {
    class func imageWithView(view: UIView) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
        view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img
    }
}

希望这会有所帮助!

【讨论】:

  • 嗨,谢谢您的回答,我已经尝试过了,只是再次验证了它,我也得到了同样的结果。它在模拟器上运行良好,但在真实设备上返回黑色图像。
  • 如果你得到一个黑色图像,你可能想尝试将 opaque 设置为 false:UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
猜你喜欢
  • 2011-07-25
  • 2012-12-25
  • 2015-11-24
  • 2016-12-10
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多