iOS圖片 : 打開相機或打開相冊
首先, 在應用中打開相機或者是打開相冊都會有一個彈窗之類的,讓用戶選擇到底是打開相冊,還是打開相機
這裏我們以彈出對話框爲例
- 首先對 UIImageView 添加一個輕拍手勢, 在輕拍手勢的方法中創建一個 UIActionSheet 的對象
//在本類中要遵從 UIActionSheetDelegate 協議
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"獲取照片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相冊", @"拍照", nil];
[sheet showInView:self.view];
[sheet release]; 給 UIActionSheet 對象添加響應事件
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { switch (buttonIndex) { case 0: //從相冊中讀取 [self readImageFromAlbum]; break; case 1: //拍照 [self readImageFromCamera]; break; case 2: break; default: break; } }
//從相機中讀取相片 -(void)readImageFromAlbum { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];//創建對象 imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;//(選擇類型)表示僅僅從相冊中選取照片 imagePicker.delegate = self;//指定代理,因此我們要實現UIImagePickerControllerDelegate, UINavigationControllerDelegate協議 imagePicker.allowsEditing = YES;//設置在相冊選完照片後,是否跳到編輯模式進行圖片剪裁。(允許用戶編輯) [self presentViewController:imagePicker animated:YES completion:nil];//顯示相冊 [imagePicker release]; }
//拍照 -(void)readImageFromCamera { //判斷選擇的模式是否爲相機模式,如果沒有彈窗警告 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.allowsEditing = YES;//允許編輯 imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.delegate = self; [self presentViewController:imagePicker animated:YES completion:nil]; [imagePicker release]; } else { //彈出窗口響應點擊事件 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未檢測到攝像頭" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"確定", nil];//警告。。確認按鈕 [alert show]; [alert release]; } }
//在本類中需要遵從 UIImagePickerControllerDelegate 協議 //圖片編輯完成之後觸發, 顯示圖片在button上 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { //參數image 就是最終選擇的圖片 HeaderView *header = (HeaderView*)self.tableView.tableHeaderView; [header.iconView setImage:image forState:(UIControlStateNormal)]; [self dismissViewControllerAnimated:YES completion:nil]; }
至此 , 就可以打開相機或相冊了!