ios基本控件之UIImagePickerController



UIImagePickerController

1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;                 检查指定源是否在设备上可用。

//检查照片源是否可用

[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]2.allowsEditing 默认NO

是否允许编辑

允许编辑.

[imagePicker setAllowsEditing:YES]; 

3. videoMaximumDuration


设置UIImagePicker的最大视频持续时间.默认10分钟

4. + availableMediaTypesForSourceType: // 指定源可用的媒体种类

 //获得相机模式下支持的媒体类型

NSArray* availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

5. sourceType

设置UIImagePicker照片源类型,默认有3种。

照片源类型

 

 UIImagePickerControllerSourceTypeCamera            照相机

 UIImagePickerControllerSourceTypePhotoLibrary      照片库(通过同步存放的,用户不能删除)

 UIImagePickerControllerSourceTypeSavedPhotosAlbum  保存的照片(通过拍照或者截屏保存的,用户可以删除)

 

6.UIImagePicker使用步:


    指定源是否可用. isSourceTypeAvailable:方法.
    查可用媒体(频还是只能是) availableMediaTypesForSourceType:方法.
    设置界面媒体属性mediaTypes property.
    示界面使用presentViewController:animated:completion:方法.iPad中是popover形式.需要确保sourceType有效
    操作,移除视


如果建一个完全自定义界面的image picker来浏览图,使用 Assets Library Framework Reference中的类. (AV Foundation Programming Guide 中的 “Media Capture and Access to Camera” )

 

7.设置源


    + availableMediaTypesForSourceType: // 指定源可用的媒体种类
    + isSourceTypeAvailable: // 指定源是否在设备上可用
      sourceType 

// 运行相接口前需要指明源类型.有效,则抛出异常. picker已经示的候改变个值,picker会相改变. UIImagePickerControllerSourceTypePhotoLibrary.

8.设置picker属性


      allowsEditing //是否可编辑
      delegate 
      mediaTypes 

// 指示picker示的媒体类型.设置每种类型之前availableMediaTypesForSourceType:查一下.如果空或者array中类型都不可用,会发生异常. kUTTypeImage, 只能.

    

9.video取参



      videoQuality //摄选编码质.只有mediaTypes包含kUTTypeMovie有效.
      videoMaximumDuration //,video最大记录时,10分钟.只用mediaTypes包含kUTTypeMovie有效

10.自定义界面



      showsCameraControls 

// 指示 picker 是否示默camera controls.YES,设置成NO藏默controls使用自定义的overlay view.(从而可以实而不是pickerdismiss).只有 UIImagePickerControllerSourceTypeCamera源有效,NSInvalidArgumentException异常.

      cameraOverlayView 

//自定义的用于示在picker之上的view.只有源是UIImagePickerControllerSourceTypeCamera有效.其他候使用NSInvalidArgumentException异常.

      cameraViewTransform 

//先动画.只影响,自定义的overlay view和默picker无效.只用picker的源是UIImagePickerControllerSourceTypeCamera有效,NSInvalidArgumentException异常.

11.取媒体



    – takePicture 

//使用像头取一个片。自定义overlay可以多。已经有片正在取是用无效,必要等delegate收到 imagePickerController:didFinishPickingMediaWithInfo:消息后才能再次取。非UIImagePickerControllerSourceTypeCamera源会致异常。

    – startVideoCapture 

    – stopVideoCapture 

//束视频选取,之后系统delegate imagePickerController:didFinishPickingMediaWithInfo:方法。

12.设置像头


      cameraDevice //使用的头(默后置的)
    + isCameraDeviceAvailable: // 像设备是否可用.
    + availableCaptureModesForCameraDevice: // 设备可用的取模式 
      cameraCaptureMode //相机捕模式
      cameraFlashMode //光灯模式(自动)
    + isFlashAvailableForCameraDevice: // 是否有光能力

13.UIImagePickerControllerDelegate 

使用UIImageWriteToSavedPhotosAlbum保存, UISaveVideoAtPathToSavedPhotosAlbum保存视. 4.0后使用writeImageToSavedPhotosAlbum:metadata:completionBlock:保存元.

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

//包含选择片或者一个视URL,“Editing Information Keys.”

//如果是设置可编辑属性,那么picker预显中的媒体,编辑后的与初始的都会保存在info.

    – imagePickerControllerDidCancel:
    – imagePickerController:didFinishPickingImage:editingInfo://Deprecated in iOS 3.0

NSString *const UIImagePickerControllerMediaType;// 媒体类型
NSString *const UIImagePickerControllerOriginalImage;// 原始未编辑
NSString *const UIImagePickerControllerEditedImage;// 编辑后的
NSString *const UIImagePickerControllerCropRect;// 像可编辑(有效?)
NSString *const UIImagePickerControllerMediaURL;// 的路
NSString *const UIImagePickerControllerReferenceURL;// 原始选择项URL
NSString *const UIImagePickerControllerMediaMetadata;// 只有在使用像头并且是像类型的候有效.包含选择图像信息的字典类型

14. UIImagePickerController小例子

UIImagePickerController的代理需要遵守这两个协议.<UIImagePickerControllerDelegateUINavigationControllerDelegate>

 

#pragma mark 选择照片

- (void)selectPhoto

{

    // 1. 首先判断照片源是否可用

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

        

        // 0)实例化控制器

        UIImagePickerController *picker = [[UIImagePickerController alloc]init];

        // 1)设置照片源

        [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

        

        // 2) 设置允许修改

        [picker setAllowsEditing:YES];

        // 3) 设置代理

        [picker setDelegate:self];

        // 4) 显示控制器

        [self presentViewController:picker animated:YES completion:nil];

        

    } else {

        NSLog(@"照片源不可用");

    }

    

}

 

#pragma mark - imagePicker代理方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

    UIImage *image = info[@"UIImagePickerControllerEditedImage"];

    [_imageButton setImage:image forState:UIControlStateNormal];

    

    // 关闭照片选择器

    [self dismissViewControllerAnimated:YES completion:nil];

    

    // 需要将照片保存至应用程序沙箱,由于涉及到数据存储,同时与界面无关

    // 可以使用多线程来保存图像

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT0), ^{

        

        // 保存图像

        // 1. 取图像路径

        NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES);

        NSString *imagePath = [docs[0]stringByAppendingPathComponent:@"abc.png"];

        

        // 2. 转换成NSData保存

        NSData *imageData = UIImagePNGRepresentation(image);

        [imageData writeToFile:imagePath atomically:YES];

    });

}

 

 

你可能感兴趣的:(ios,基本控件)