此份筆記是根據ISBN:978-986-201-900-9這本書的第23章節所紀錄的。
此份專案可以讓使用者使用內建相機拍照並在UIImageView上顯示,也可以讓使用者從相簿裡挑選照片在UIImageView上顯示。
【專案開發步驟】
建立專案:
使用Single View Application模板建立一個名為CameraApp的專案,使用iPhone裝置。
設計使用者介面:
在畫面上加入一個UIImageView以及兩個按鈕,如下圖所示。
設計User Interface |
物件與類別的IBAction |
@IBOutlet var imageView: UIImageView
實作CameraViewController:
讓ViewController繼承UIImagePickerControllerDelegate與UINavigationControllerDelegate,如下所示。
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { }
在takePhoto:方法裡增加下面的程式。
if (UIImagePickerController.isSourceTypeAvailable(.Camera)) {
var picker: UIImagePickerController = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true
picker.sourceType = .Camera
picker.showsCameraControls = true
self.presentViewController(picker, animated: true, completion: nil)
}
首先先判斷裝置是否有支援相機的功能。建立一個變數名為picker,資料型態為UIImagePickerController。將delegate設為自己。將是否允許編輯設為是。將sourceType設為相機。允許顯示相機的控制。最後想picker顯示出來。在selectPhoto:方法裡增加下面的程式。
if (UIImagePickerController.isSourceTypeAvailable(.SavedPhotosAlbum)) {
var picker: UIImagePickerController = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true
picker.sourceType = .SavedPhotosAlbum
self.presentViewController(picker, animated: true, completion: nil)
}
與takePhoto:方法類似,但是將sourceType設為SavePhotosAlbum。實作UIImagePickerController的delegate:
實作以下func。
func imagePickerController(_picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: NSDictionary!) { }
當使用者拍完照或是挑選完照片後會呼叫這個func。將以下程式碼加入到didFinishPickingMediaWithInfo:方法裡。
var choseImage: UIImage = info[UIImagePickerControllerEditedImage] as UIImage
imageView.image = choseImage
_picker.dismissViewControllerAnimated(true, completion: nil)
建立一個變數名為choseImage,資料型態為UIImage,存放使用者所拍的照片或是所挑選的照片。將使用者的照片給imageView去顯示。最後讓視窗消失即可。【執行結果】
【專案範例】
沒有留言:
張貼留言