相冊iosbuttonimageuiviewpath UIImagePickerController概述: UIImagePickerController 類是獲取選擇圖片和視頻的用戶接口。咱們能夠用這個controller選擇咱們所須要的圖片和視頻。對於這個類來講比較特殊,咱們不可以任意定製,也不能夠繼承生成子類。 咱們在用UIImagePickerController類的時候,只須要調用用代碼實現其在什麼位置顯示和開始,固然咱們以後能夠選擇所需的圖片和影片,或者也能夠不選擇點擊取消便可。 可是在咱們調用接口以前,咱們須要確認: 一:當前設備是否支持使用UIImagePickerController,這個時候咱們須要調用isSourceTypeAvailable:方法判斷。 二:查看符合的媒體類型(圖片或者視頻),這個時候咱們調用availableMediaTypesForSourceType: 方法判斷。 同時使用UIImagePickerController時,咱們須要UIImagePickerControllerDelegate協議代理實現一些特定時間特定的動做。在調用攝像頭的時候咱們能夠選擇使用閃光燈,可是默認條件下對視頻有10分鐘的限制,須要用videoMaximumDuration屬性更改默認時間, 三:以後咱們設定界面媒體的屬性 1:sourceType //從哪選取媒體 enum { UIImagePickerControllerSourceTypePhotoLibrary, UIImagePickerControllerSourceTypeCamera, UIImagePickerControllerSourceTypeSavedPhotosAlbum }; typedef NSUInteger UIImagePickerControllerSourceType; 2: mediaTypes mediaTypes用來肯定再picker裏顯示那些類型的多媒體文件,圖片?視頻? + (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType 一共有三個可選的代理方法UIImagePickerControllerDelegate – imagePickerController:didFinishPickingMediaWithInfo: – imagePickerControllerDidCancel: – imagePickerController:didFinishPickingImage:editingInfo: -(void) pick{ [imagePicker takePicture]; } - (IBAction)press:(id)sender { imagePicker = [UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.showsCameraControls = NO; UIView* view = [UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; view.backgroundColor = [UIColor redColor]; UIButton* button = [UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)]; button.backgroundColor = [UIColor blueColor]; [button addTarget:self action:@selector(pick) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:button]; CGRect newFrame = CGRectMake(0.0,436,320,44); view.frame = newFrame; imagePicker.cameraOverlayView = view; [self presentModalViewController:imagePicker animated:YES]; } -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { if ([info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeImage]) { UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } else if ([info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeMovie]) { NSString* path = [info objectForKey:UIImagePickerControllerMediaURL] path]; UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo:), nil); } [picker dismissModalViewControllerAnimated:YES]; } -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissModalViewControllerAnimated:YES]; }