1. 程式人生 > >[Xcode10 實際操作]九、實用進階-(13)呼叫相機並獲取拍攝後的圖片

[Xcode10 實際操作]九、實用進階-(13)呼叫相機並獲取拍攝後的圖片

本文將演示如何呼叫相機並獲取拍攝後的圖片。

在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】

 1 import UIKit
 2 
 3 //首先新增兩個協議 UIImagePickerControllerDelegate, UINavigationControllerDelegate
 4 //來實現開啟相機並拍照的功能
 5 class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
 6 
 7
//新增一個影象檢視屬性,用來顯示從相機裝置中讀取的照片 8 var imageView: UIImageView! 9 //新增一個圖片拾取控制器,作為當前檢視控制器的屬性 10 var imagePickerController: UIImagePickerController! 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 // Do any additional setup after loading the view, typically from a nib.
15 16 //初始化影象檢視,並設定其位置在(20,120),尺寸為(280,200)。 17 self.imageView = UIImageView(frame: CGRect(x: 20, y: 120, width: 280, height: 200)) 18 //然後將影象檢視,新增到當前檢視控制器的根檢視。 19 self.view.addSubview(imageView) 20 21 //建立一個按鈕控制元件,並設定其位置在(20,60),尺寸為(280,40) 22 let button = UIButton(frame: CGRect(x: 20
, y: 60, width: 280, height: 40)) 23 //同時設定按鈕在正常狀態下的標題文字。 24 button.setTitle("Shot", for: .normal) 25 //然後給按鈕繫結點選事件 26 button.addTarget(self, action: #selector(ViewController.pickImage), for: UIControl.Event.touchUpInside) 27 //設定按鈕的背景顏色為深灰色 28 button.backgroundColor = UIColor.darkGray 29 30 //同樣將按鈕,新增到當前檢視控制器的根檢視 31 self.view.addSubview(button) 32 } 33 34 //新增一個方法,用來響應按鈕的點選事件 35 @objc func pickImage() 36 { 37 //首先檢測相機裝置是否可以正常使用 38 if(UIImagePickerController.isSourceTypeAvailable(.camera)) 39 { 40 //初始化圖片拾取控制器物件 41 self.imagePickerController = UIImagePickerController() 42 //設定圖片拾取控制器的代理物件,為當前的檢視控制器 43 self.imagePickerController.delegate = self 44 //設定圖片拾取控制器,是否允許使用者移動、縮放和剪下圖片 45 self.imagePickerController.allowsEditing = true 46 //設定圖片拾取控制器的來源型別為相機裝置 47 self.imagePickerController.sourceType = UIImagePickerController.SourceType.camera 48 //最後在當前檢視控制器視窗,展示圖片拾取控制器。 49 self.present(self.imagePickerController, animated: true, completion: nil) 50 } 51 } 52 53 //新增一個代理方法,用來響應完成圖片拾取的事件 54 func imagePickerController(_ picker: UIImagePickerController, 55 didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 56 //將使用者選擇的圖片,賦予影象檢視 57 self.imageView.image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage 58 //然後取消圖片拾取控制器的展示 59 self.dismiss(animated: true, completion: nil) 60 } 61 62 //新增一個代理方法,用來響應使用者取消圖片拾取的事件 63 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) 64 { 65 //當用戶取消圖片拾取時,隱藏圖片拾取控制器 66 self.dismiss(animated: true, completion: nil) 67 } 68 69 override func didReceiveMemoryWarning() { 70 super.didReceiveMemoryWarning() 71 // Dispose of any resources that can be recreated. 72 } 73 }

需要使用真實裝置進行除錯。