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];
}
相關文章
相關標籤/搜索