我正在制作一个将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中的元素,这与模拟器结果不同。
答案 0 :(得分:6)
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
}
}
希望这有帮助!