




建立 ImageView
建立 ImageView的Action
在 Info.plist 加入 Privacy - Photo Library Usage Description
開啟 ImagePickerController
設定 ImagePickerController的delegate 為ViewController
建立 ImagePickerController方法
使用 Extension 將 ImagePickerController 獨立出來
從 Variables View 查看 Info 資訊
取得圖片大小
取得圖片
開啟 ImagePickerController的編輯模式
從 Variables View 查看編輯後的 Info 資訊
取得編輯後的圖片
建立 ImageView


建立 ImageView的Action
用來開啟 ImagePickerController
當點擊圖片呼叫 handleSlectImage()
補充:
★ 將 myImageView 設定為 lazy var
沒有設定,不會呼叫 handleSelectImage()
但有時可以,所以最好還是設定
★ imageView.addGestrueRecognizer
imageView 加入手勢
★ UITapGestrueRecongnizer
加入「點擊」手勢
在 Info.plist 加入 Privacy - Photo Library Usage Description
用來開啟 ImagePickerController
開啟 ImagePickerController


設定 ImagePickerController的delegate 為ViewController
才可以使用 ImagePicker的方法
★ 繼承 UIImagePickerControllerDelegtate & UINavigationControllerDelegate
★ 設定 ImagePickerController的delegate 為ViewController
補充:
☆ 當你要建立 ImagePickerController的方法必須繼承 UIImagePickerControllerDelegate
☆ 要讓 ViewController 可以使用 ImagePickerController的方法
必須設定 ImagePickerController的delegate 為ViewController
☆ 要使用 delegate
必須繼承 UIImagePickerControllerDelegtate & UINavigationControllerDelegate
☆ 所以,要使用 ImagePickerControllerd的方法
必須繼承 UIImagePickerControllerDelegtate & UINavigationControllerDelegate
並且設定 ImagePickerController的delegate 為ViewController
在 UIImagePickerController的程式碼,你可以看到2個方法
所以當要建立這2個方法,該類別就必須繼承 UIImagePickerControllerDelegate

在 UIImagePickerController的程式碼
你可以看到 delegate屬性的資料型別
為UIImagePickerControllerDelegate & UINavigationControllerDelegate
所以 delegate 只接受有同時繼承這2個類別的資料

建立 ImagePickerController 方法

點擊圖片時,印出圖片資訊
點擊Cancel按鈕時,
印出handleCancel字串,並關閉 ImagePickerController
執行

使用 Extension 將 ImagePickerController 獨立出來
建立 ImagePickerController.swift

將3個方法,從 ViewController.swift 剪下貼至 ImagePickerController

這樣做,相當等於把 ViewController 延展出來
當執行 ViewController.swift時,同時也會執行 ImagePikcerController.swift
這樣做可以讓程式碼閱讀起來更容易。
從 Variables View 查看 Info 資訊
將中斷點設定在 print(Info) 並執行程式

Info = [
"UIImagePickerControllerMediaType":publick.image , "UIImagePickerControllerReferenceURL:id":D3B4... , "UIImagePickerControllerOriginalImage":<>size{4224,2358}
]
取得圖片大小

執行

補充:
Info 的資料型態 [String:Any]
originalImage = info["UIImagePickerControllerOriginalImage"]
originalImage 的資料型態為 [Any]
originalImage 的內容為

originalImage.size 發生錯誤
Any沒在size成員
(originalImage as AnyObject).size 的內容為
(4224.0 , 2368)
取得圖片

★ var selectedImageFromPicker:UIImage>
建立變數,用來存放取得的圖片
★ if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage
info["UIImagePickerControllerOriginalImage"] 的資料型態為 Any
info["UIImagePickerControllerOriginalImage"] as? UIImage
將 Any 轉成 UIImage
★ if let selectedImage = selectedImageFromPicker
如果 selectedImageFromPicker 存在的話
設定 seletedImage 為 selectedImageFromPicker
★ myImageView.image = selectedImage
將取得的圖片顯示在 myImageView

開啟 ImagePickerController的編輯模式



從 Variables View 查看編輯後的 Info 資訊
將中斷點設定在 dismiss() 並執行程式
Info 裡多了一個編輯圖片後的資訊
取得編輯後的圖片

沒有留言:
張貼留言