#77 搭配 UIImagePickerController 選相簿照片或拍照

功能需求:

參考通訊錄 App,從相簿選照片或拍照,修改 App 畫面上的照片。

1 使用 UIAlertController 選擇照片來源。
(1) 從相簿選。
(2) 拍照。

ps: 可用 UIImagePickerController.isSourceTypeAvailable 判斷是否支援相簿或拍照。

2 使用 UIImagePickerController 從相簿選照片或拍照。

值得注意的,拍照只能在實機,無法在模擬器測試。如果想拍照,請記得在 App Info 頁面的 Privacy — Camera Usage Description 設定請求權限的文字。

提示

(1) UIImagePickerController 的 sourceType 控制從相簿選照片或拍照。

(2) 設定 UIImagePickerController 的 delegate。

比方將 ViewController 設為 UIImagePickerController 的 delegate ,程式如下。

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func selectPhoto() {
let controller = UIImagePickerController()
controller.sourceType = .photoLibrary
controller.delegate = self
}
}

因為 delegate 的型別如下,所以 ViewController 要同時遵從 protocol UIImagePickerControllerDelegate & UINavigationControllerDelegate。

weak open var delegate: (UIImagePickerControllerDelegate & UINavigationControllerDelegate)?

(3) 當使用者拍照或選照片後,將呼叫 UIImagePickerControllerDelegate 的 function imagePickerController(_:didFinishPickingMediaWithInfo:)。

我們可從參數 info 取得圖片相關資料。info 的型別是 dictionary,傳入 key .originalImage 可得到圖片。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
let image = info[.originalImage] as? UIImage
}

作品集

--

--

彼得潘的 iOS App Neverland
彼得潘的 100 道 Swift iOS App 謎題

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com