1.新建Empty Application,添加一個視圖,設計xib如下:
2.使用 UIImagePickerController ,必須指定幾個非常重要的屬性:指定源的類型(指定之前要判斷是否可用)、指定委托、指定圖片是否可以編輯,設置完之后,就可以啟動了,將其“推”出來即可。
- (IBAction)takeNewPhoto:(id)sender
{
// 創建圖片選擇器
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// 指定源類型前,檢查圖片源是否可用
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
// 指定源的類型
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// 在選定圖片之前,用戶可以簡單編輯要選的圖片。包括上下移動改變圖片的選取范圍,用手捏合動作改變圖片的大小等。
imagePicker.allowsEditing = YES;
// 實現委托,委托必須實現UIImagePickerControllerDelegate協議,來對用戶在圖片選取器中的動作
imagePicker. delegate = self;
// 設置完iamgePicker后,就可以啟動了。用以下方法將圖像選取器的視圖“推”出來
[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
else
{
UIAlertView *alert =[[UIAlertView alloc] initWithTitle:nil message: @" 相機不能用 " delegate:nil cancelButtonTitle: @" 關閉 " otherButtonTitles:nil];
[alert show];
[alert release];
}
}
// 創建圖片選擇器
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// 指定源類型前,檢查圖片源是否可用
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
// 指定源的類型
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// 在選定圖片之前,用戶可以簡單編輯要選的圖片。包括上下移動改變圖片的選取范圍,用手捏合動作改變圖片的大小等。
imagePicker.allowsEditing = YES;
// 實現委托,委托必須實現UIImagePickerControllerDelegate協議,來對用戶在圖片選取器中的動作
imagePicker. delegate = self;
// 設置完iamgePicker后,就可以啟動了。用以下方法將圖像選取器的視圖“推”出來
[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
else
{
UIAlertView *alert =[[UIAlertView alloc] initWithTitle:nil message: @" 相機不能用 " delegate:nil cancelButtonTitle: @" 關閉 " otherButtonTitles:nil];
[alert show];
[alert release];
}
}
3. UIImagePickerControllerDelegate協議的方法來實現對用戶的操作
#pragma mark -
#pragma mark UIImagePickerControllerDelegate協議的方法
// 用戶點擊圖像選取器中的“cancel”按鈕時被調用,這說明用戶想要中止選取圖像的操作
- ( void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
// 用戶點擊選取器中的“choose”按鈕時被調用,告知委托對象,選取操作已經完成,同時將返回選取圖片的實例
- ( void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
noticeLabel.hidden = YES;
[imageView setImage:image];
[picker dismissModalViewControllerAnimated:YES];
#pragma mark UIImagePickerControllerDelegate協議的方法
// 用戶點擊圖像選取器中的“cancel”按鈕時被調用,這說明用戶想要中止選取圖像的操作
- ( void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
// 用戶點擊選取器中的“choose”按鈕時被調用,告知委托對象,選取操作已經完成,同時將返回選取圖片的實例
- ( void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
noticeLabel.hidden = YES;
[imageView setImage:image];
[picker dismissModalViewControllerAnimated:YES];
}