今天在項(xiàng)目中要實(shí)現(xiàn)一個(gè)上傳頭像功能,點(diǎn)擊修改頭像行彈出拍照或者從相冊(cè)選擇來設(shè)置頭像。
實(shí)現(xiàn)效果如下圖:
iOS有兩種的拍照和視頻的方式:
方法A:直接使用UIImagePickerController,這個(gè)類提供了一個(gè)簡(jiǎn)單便捷的拍照與選擇圖片庫里圖片的功能。
方法B:另一種是通過AVFoundation.framework框架完全自定義拍照的界面和選擇圖片庫界面。
一、使用UIImagePickerController的具體操作如下:
提示:首先對(duì)應(yīng)的viewController必須遵循以下協(xié)議:<UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>
1、調(diào)用接口前,我們需要先判斷當(dāng)前設(shè)備是否支持UIImagePickerController,用isSourceTypeAvailable:來判斷是否可用。我直接在點(diǎn)擊修改頭像后調(diào)用chooseImage方法進(jìn)行判斷:

? ? ? UIActionSheet是在iOS彈出的選擇按鈕項(xiàng),可以添加多項(xiàng),并為每項(xiàng)添加點(diǎn)擊事件,當(dāng)不支持相機(jī)時(shí)不顯示拍照選項(xiàng)。cancelButtonTitle 和 destructiveButtonTitle是系統(tǒng)自動(dòng)的兩項(xiàng),otherButtonTitles是自己定義的項(xiàng),注意,最后一個(gè)參數(shù)要是nil。
2、實(shí)現(xiàn)相應(yīng)的Action Sheet的選項(xiàng)的事件,對(duì)應(yīng)UIActionSheetDelegate中的 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 方法:

3、實(shí)現(xiàn)ImagePicker delegate 事件,獲得已拍攝或者選擇的圖片,最后調(diào)用寫好的upload方法將圖片上傳到服務(wù)器。

4、這里調(diào)用相機(jī)是系統(tǒng)自帶的,默認(rèn)提示都為英文,可以修改英文標(biāo)題為中文,如cancel換為取消等。直接在項(xiàng)目的supporting files目錄中的Info.plist中設(shè)置Localization native development region為China.
5、保存圖片

6、點(diǎn)擊圖片預(yù)覽,放大縮小帶動(dòng)畫。

二、通過AVFoundation.framework框架完全自定義
待補(bǔ)充.....