本來想做個注冊登錄的表單的,想想還是先做個簡單的頭像選擇,一般情況下不管是內部管理系統還是面向公眾的互聯網公司,注冊登錄是免不了的,用戶頭像上傳是免不了的,尤其是企業用戶,上傳了自己的圖片才感覺自己買的系統是比較值的。iOS開發中上傳圖片還是比較簡單的,通過UIImagePickerController和協議就很容易的實現的圖片的選擇和上傳。
頁面布局
首先看下視圖,一個按鈕,一個標簽和一個ImageView:
界面很簡單,頭文件中聲明一下UIImageView:
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
Demo實現
上傳按鈕的代碼,具體方法已經注釋:
//選擇頭像 - (IBAction)chooseImage:(id)sender { //實例化照片選擇控制器 UIImagePickerController *pickControl=[[UIImagePickerController alloc]init]; //設置照片源 [pickControl setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; //設置協議 [pickControl setDelegate:self]; //設置編輯 [pickControl setAllowsEditing:YES]; //選完圖片之后回到的視圖界面 [self presentViewController:pickControl animated:YES completion:nil]; }
設置協議,需要頭文件中聲明一下:
@interface ViewController : UIViewController <UINavigationControllerDelegate,UIImagePickerControllerDelegate> @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end
之后需要在返回的時候顯示圖片使用協議中的imagePickerController方法:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ // UIImage *image=info[@"UIImagePickerControllerOriginalImage"]; UIImage *image=info[@"UIImagePickerControllerEditedImage"]; [self.imageView setImage:image]; //選取完圖片之后關閉視圖 [self dismissViewControllerAnimated:YES completion:nil]; }
需要注意的,如果需要不需要編輯,獲取image的方法為:
UIImage *image=info[@"UIImagePickerControllerOriginalImage"];
最終效果演示: