『簡易說明Swift 4』基本Camera與Album使用簡介

用手機照相已經是日常生活生的一部分了,然而如何使用IOS SDK的功能實現照相呢?其實非常容易,下面將介紹如何使用Camera與相簿的存取。

在說明如何開發之前,必須要先說明兩個需要注意的問題,第一個就是照相功能,是不能在模擬器上模擬的,並需要在iphone或是ipad上才能使用,第二個那就是Privacy,當要使用相機或是相簿時,一定要加入對應的Privacy,不然APP會來一個閃退送給你。當發現閃退為時不用緊張,看一下Console,會顯示為什麼錯,你會發現privacy-sensitive data without a usage description,要你加入Privacy。

因此當使用照相與存取相簿的功能,必須新增3個Privacy,並且說明原因,讓使用者同意才能存取使用,所以要在 App 的 Info.plist頁面內,新增Privacy — Camera Usage Description、 Privacy — Photo Library Additions Usage Description與 Privacy — Photo Library Usage Description,並在各別的 value 欄位內說明理由即可。

  • Privacy — Camera Usage Description:使用Camera的權限請求。
  • Privacy — Photo Library Additions Usage Description:寫入 photo album的權限請求。
  • Privacy — Photo Library Usage Description:讀取 photo album的權限請求。

接下來就是如何實踐照相功能了,其實照相功能非常簡單,因為IOS的SDK提供了 UIImagePickerController()這個Delegate來實現,只要將sourceType設定為.camera,然後present出去,就會顯示出內建的照相機了。但是要記得,Controller要繼承UIImagePickerControllerDelegate與UINavigationControllerDelegate才可以。

或許你會發現怎麼相機的介面是英文,其實要變成中文完全不需要修改程式,而是一樣要到Info.plist,修改Localization native development region,將value 欄位的值,設定為Taiwan,就會變成中文介面,如果想顯示其他種語言也可以,只要更改Localization native development region的語系即可。

照相後當然要將照片存到相簿內,然後如何儲存呢?這就更簡單了,記得剛剛imagePicker.delegate = self 嗎?這就是當照相完選擇使用照片時,就會呼叫didFinishPickingMediaWithInfo。

然後從info中取得剛剛照的相片,然後只需要呼叫一行程式碼,就是UIImageWriteToSavedPhotosAlbum(),就可以將相片存到相簿內。如果想在UIImageView直接顯示,則是直接將取回的image指定給UIImageView即可,如下註解的camerImage.image = image。

當照完相片後當然要看看相簿裡有沒有剛剛存的照片拉,這也是很容易可以實現的,因為也是呼叫一樣的UIImagePickerController(),就可以完成,只是sourceType要設為.savedPhotosAlbum,就會顯示相簿了。顯示相簿這功能可以使用模擬器來模擬。

sourceType有三種,分別為photoLibrary、camera與savedPhotosAlbum。每次使用UIImagePickerController()時,只能單選其中一種使用,不能複選。

savedPhotosAlbum、photoLibrary與camera

--

--