Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cách chụp màn hình lập trình (programmatically) trong iPhone/iOS

Mặc dù iOS không cung cấp cách chính thức để chụp màn hình thiết bị bằng code, nhưng iOS cung cấp cách chụp màn hình bằng nút Home + Power. Để chụp màn hình bằng code, chúng ta thực hiện các bước sau:

Các bước thực hiện

  1. Lấy layer của keyWindow: UIApplication.shared.keyWindow!.layer
  2. Lấy tỷ lệ màn hình: UIScreen.main.scale
  3. Tạo context hình ảnh mới với cùng kích thước view
  4. Render layer vào context và lưu thành UIImage

Ví dụ hoàn chỉnh

Tạo dự án mới, thêm màu nền cho ViewController, kéo một Button và kết nối action. Thêm code sau vào action:

@IBAction func takeshot(_ sender: Any) {
    var image: UIImage?
    let currentLayer = UIApplication.shared.keyWindow!.layer
    let currentScale = UIScreen.main.scale
    
    UIGraphicsBeginImageContextWithOptions(currentLayer.frame.size, false, currentScale)
    guard let currentContext = UIGraphicsGetCurrentContext() else { return }
    currentLayer.render(in: currentContext)
    image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    guard let img = image else { return }
    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil)
}

Cấu hình Info.plist

Thêm key NSPhotoLibraryAddUsageDescription vào Info.plist để xin quyền lưu ảnh.

Kết quả

Giao diện ứng dụng khi chạy:

Cách chụp màn hình lập trình (programmatically) trong iPhone/iOS

Lần đầu chạy, nhấn nút chụp sẽ xin quyền truy cập Photos:

Cách chụp màn hình lập trình (programmatically) trong iPhone/iOS

Sau khi cho phép, ảnh sẽ xuất hiện trong ứng dụng Photos:

Cách chụp màn hình lập trình (programmatically) trong iPhone/iOS

Lưu ý: Code này chụp toàn bộ màn hình keyWindow. Nếu cần chụp một View cụ thể, hãy thay currentLayer bằng yourView.layer. Có thể chuyển hàm này thành extension của UIView để tái sử dụng.