IOS开发之相册拾取器UIImagePickerController(转)
2012-09-17 21:55
405 查看
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{
[imagePickertakePicture];
}
-(IBAction)press:(id)sender {
imagePicker= [UIImagePickerController alloc] init];
imagePicker.delegate= self;
imagePicker.mediaTypes= [UIImagePickerControlleravailableMediaTypesForSourceType: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];
[buttonaddTarget:self action:@selector(pick)forControlEvents:UIControlEventTouchUpInside];
[viewaddSubview:button];
CGRectnewFrame = CGRectMake(0.0,436,320,44);
view.frame= newFrame;
imagePicker.cameraOverlayView= view;
[selfpresentModalViewController:imagePickeranimated:YES];
}
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
if([info objectForKey:UIImagePickerControllerMediaType]isEqualToString:(NSString*)kUTTypeImage]) {
UIImage*image = [infoobjectForKey:UIImagePickerControllerOriginalImage];
UIImageWriteToSavedPhotosAlbum(image,self, @selector(image:didFinishSavingWithError:contextInfo:),nil);
} elseif ([info objectForKey:UIImagePickerControllerMediaType]isEqualToString:(NSString*)kUTTypeMovie])
{
NSString*path = [info objectForKey:UIImagePickerControllerMediaURL]path];
UISaveVideoAtPathToSavedPhotosAlbum(path,self, @selector(video:didFinishSavingWithError:contextInfo:),nil);
}
[pickerdismissModalViewControllerAnimated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController*)picker {
[pickerdismissModalViewControllerAnimated:YES];
}
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{
[imagePickertakePicture];
}
-(IBAction)press:(id)sender {
imagePicker= [UIImagePickerController alloc] init];
imagePicker.delegate= self;
imagePicker.mediaTypes= [UIImagePickerControlleravailableMediaTypesForSourceType: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];
[buttonaddTarget:self action:@selector(pick)forControlEvents:UIControlEventTouchUpInside];
[viewaddSubview:button];
CGRectnewFrame = CGRectMake(0.0,436,320,44);
view.frame= newFrame;
imagePicker.cameraOverlayView= view;
[selfpresentModalViewController:imagePickeranimated:YES];
}
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
if([info objectForKey:UIImagePickerControllerMediaType]isEqualToString:(NSString*)kUTTypeImage]) {
UIImage*image = [infoobjectForKey:UIImagePickerControllerOriginalImage];
UIImageWriteToSavedPhotosAlbum(image,self, @selector(image:didFinishSavingWithError:contextInfo:),nil);
} elseif ([info objectForKey:UIImagePickerControllerMediaType]isEqualToString:(NSString*)kUTTypeMovie])
{
NSString*path = [info objectForKey:UIImagePickerControllerMediaURL]path];
UISaveVideoAtPathToSavedPhotosAlbum(path,self, @selector(video:didFinishSavingWithError:contextInfo:),nil);
}
[pickerdismissModalViewControllerAnimated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController*)picker {
[pickerdismissModalViewControllerAnimated:YES];
}
相关文章推荐
- IOS开发之相册拾取器UIImagePickerController
- IOS开发之相册拾取器UIImagePickerController
- 基于Swift的iOS应用程序开发:使用UIImagePickerController从相册选择图片
- iOS开发中使用相机或系统相册的一些问题总结(UIImagePickerController)
- ios开发学习笔记--调用相册或相机(UIImagePickerController)
- iOS开发—— UIImagePickerController获取相册和拍照
- iOS开发之UIImagePickerController图片选择管理器
- UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库—IOS开发
- iOS摄像头和相册-UIImagePickerController-浅析
- iOS UIImagePickerController 图片拾取器
- Qt for iOS:使用UIImagePickerController获取一个系统相册中的图片
- iOS摄像头和相册-UIImagePickerController-浅析
- 基于Swift的iOS应用程序开发:使用UIImagePickerController调取摄像头进行拍照
- iOS相机相册调用 — UIImagePickerController
- iOS摄像头和相册-UIImagePickerController-浅析
- iOS摄像头和相册-UIImagePickerController-浅析
- iOS使用UIImagePickerController在相册中选择破损图crash
- iOS摄像头和相册-UIImagePickerController-浅析
- iOS摄像头和相册-UIImagePickerController-浅析
- iOS摄像头和相册-UIImagePickerController-浅析