IOS开发之相册拾取器UIImagePickerController

  


相册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];
}
相关文章
相关标签/搜索