【发布时间】:2019-12-18 20:28:03
【问题描述】:
我想从 UIView 快照 生成一个.png 文件,但它始终是nil。你能告诉我我的代码有什么问题吗?我正在使用 Xcode 11.3 和 iOS 13.3 运行 Catalina 10.15.2。
这是我的代码的 sn-p:
extension UIView {
fileprivate func snapShot(view: UIView) -> UIView {
let snapshot = view.snapshotView(afterScreenUpdates: false)
self.addSubview(snapshot!)
return snapshot!
}
}
class ViewController: UIViewController {
var image: UIImage?
var imageView: UIImageView?
@IBAction func take(_ sender: UIButton) {
let oneThird = CGRect(x: 0,
y: 0,
width: view.frame.size.width / 3,
height: view.frame.size.height / 3)
let snap = view.snapShot(view: self.view)
snap.frame = oneThird
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
let png = snap.largeContentImage?.pngData()
if let pngData = png {
self.image = UIImage(data: pngData)
}
self.imageView = UIImageView(image: self.image)
}
print(self.view.subviews.indices) // 0..<5
print(imageView?.image as Any) // NIL
}
}
任何帮助表示赞赏。
【问题讨论】:
标签: swift uiview uiimageview uiimage uikit