แปลง UIView ของคุณเป็นรูปภาพโดยdrawViewHierarchyInRect: afterScreenUpdates:ซึ่งเร็วกว่า renderInContext หลายเท่า
หมายเหตุสำคัญ: อย่าเรียกใช้ฟังก์ชันนี้จากviewDidLoad หรือ viewWillAppearตรวจสอบให้แน่ใจว่าคุณกำลังจับภาพมุมมองหลังจากที่แสดง / โหลดเต็มที่แล้ว
Obj C.
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.opaque, 0.0f);
[myView drawViewHierarchyInRect:myView.bounds afterScreenUpdates:NO];
UIImage *snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
myImageView.image = snapshotImageFromMyView;
บันทึกรูปภาพที่แก้ไขอัลบั้มรูปภาพ
UIImageWriteToSavedPhotosAlbum(snapshotImageFromMyView, nil,nil, nil);
สวิฟต์ 3/4
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.isOpaque, 0.0)
myView.drawHierarchy(in: myView.bounds, afterScreenUpdates: false)
let snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
print(snapshotImageFromMyView)
myImageView.image = snapshotImageFromMyView
การวางนัยทั่วไปที่ง่ายสุด ๆ พร้อมส่วนขยาย iOS11, swift3 / 4
extension UIImage{
convenience init(view: UIView) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.init(cgImage: (image?.cgImage)!)
}
}
Use :
imgVV.image = UIImage.init(view: myView)
let img = UIImage.init(view: myView)