相册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]; }