UIImagePickerController 简介

来源:互联网 发布:centos切换输入法 编辑:程序博客网 时间:2024/06/05 09:14


//ImagePickerController获取的资源类型:1.相册(按类型分) 2.相机 3.所有照片(按照时间分)

typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {

UIImagePickerControllerSourceTypePhotoLibrary,

UIImagePickerControllerSourceTypeCamera,

UIImagePickerControllerSourceTypeSavedPhotosAlbum

} ;


//拍摄视频的质量 1.高清 2.中档清晰度 3.低档清晰度 4.画面大小640*480

typedef NS_ENUM(NSInteger, UIImagePickerControllerQualityType) {

UIImagePickerControllerQualityTypeHigh = 0,       // highest quality

UIImagePickerControllerQualityTypeMedium = 1,     // medium quality, suitable for transmission via Wi-Fi

UIImagePickerControllerQualityTypeLow = 2,         // lowest quality, suitable for tranmission via cellular network

UIImagePickerControllerQualityType640x480 NS_ENUM_AVAILABLE_IOS(4_0) = 3,    // VGA quality

UIImagePickerControllerQualityTypeIFrame1280x720 NS_ENUM_AVAILABLE_IOS(5_0) = 4,

UIImagePickerControllerQualityTypeIFrame960x540 NS_ENUM_AVAILABLE_IOS(5_0) = 5,

};


//获取相机资源的类型:1.拍照用 2.拍视频用

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {

UIImagePickerControllerCameraCaptureModePhoto,

UIImagePickerControllerCameraCaptureModeVideo

} __TVOS_PROHIBITED;


//获取相机的镜头:1.后置摄像头 2.前置摄像头

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {

UIImagePickerControllerCameraDeviceRear,

UIImagePickerControllerCameraDeviceFront

} __TVOS_PROHIBITED;


//闪光灯设置 1.拍照时关闭闪光灯 2.自动 3.拍照时打开闪光灯

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {

UIImagePickerControllerCameraFlashModeOff  = -1,

UIImagePickerControllerCameraFlashModeAuto = 0,

UIImagePickerControllerCameraFlashModeOn   = 1

} __TVOS_PROHIBITED;


// info dictionary keys

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaType __TVOS_PROHIBITED;      // an NSString (UTI, i.e. kUTTypeImage)

UIKIT_EXTERN NSString *const UIImagePickerControllerOriginalImage __TVOS_PROHIBITED;  // a UIImage

UIKIT_EXTERN NSString *const UIImagePickerControllerEditedImage __TVOS_PROHIBITED;    // a UIImage

UIKIT_EXTERN NSString *const UIImagePickerControllerCropRect __TVOS_PROHIBITED;       // an NSValue (CGRect)

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaURL __TVOS_PROHIBITED;       // an NSURL

UIKIT_EXTERN NSString *const UIImagePickerControllerReferenceURL        NS_AVAILABLE_IOS(4_1) __TVOS_PROHIBITED;  // an NSURL that references an asset in the AssetsLibrary framework

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaMetadata       NS_AVAILABLE_IOS(4_1) __TVOS_PROHIBITED;  // an NSDictionary containing metadata from a captured photo

UIKIT_EXTERN NSString *const UIImagePickerControllerLivePhoto NS_AVAILABLE_IOS(9_1) __TVOS_PROHIBITED;  // a PHLivePhoto


NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIImagePickerController : UINavigationController <NSCoding>



//判断某一种资源类型是否可用

+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;                 // returns YES if source is available (i.e. camera present)


//某种资源类型下的可用的资源种类。比如相机资源下:有图片和视频

+ (nullable NSArray<NSString *> *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType; // returns array of available media types (i.e. kUTTypeImage)


//相机设备是否可用

+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice                   NS_AVAILABLE_IOS(4_0); // returns YES if camera device is available


//闪光灯是否可用

+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice           NS_AVAILABLE_IOS(4_0); // returns YES if camera device supports flash and torch.


//相机设备下,抓取图片的模式数组(拍照片是0,拍视频是1

+ (nullable NSArray<NSNumber *> *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice NS_AVAILABLE_IOS(4_0); // returns array of NSNumbers (UIImagePickerControllerCameraCaptureMode)


//代理

@property(nullable,nonatomic,weak)      id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;


//输入资源类型1.相册(按类型分) 2.相机 3.所有照片

@property(nonatomic)           UIImagePickerControllerSourceType     sourceType;                                                        // default value is UIImagePickerControllerSourceTypePhotoLibrary.


//多媒体资源类型:有多种图片类型,movie,audio等。UTCoreTypes.h

@property(nonatomic,copy)      NSArray<NSString *>                   *mediaTypes;

// default value is an array containing kUTTypeImage.


//是否允许对选择的图片资源进行编辑,会出现矩形选择框,截取图片

@property(nonatomic)           BOOL                                  allowsEditing NS_AVAILABLE_IOS(3_1);     // replacement for -allowsImageEditing; default value is NO.

@property(nonatomic)           BOOL                                  allowsImageEditing NS_DEPRECATED_IOS(2_0, 3_1);


//允许视频拍摄的最大时间

@property(nonatomic)           NSTimeInterval                        videoMaximumDuration NS_AVAILABLE_IOS(3_1); // default value is 10 minutes.


//视频拍摄的质量

@property(nonatomic)           UIImagePickerControllerQualityType    videoQuality NS_AVAILABLE_IOS(3_1);         // default value is UIImagePickerControllerQualityTypeMedium. If the cameraDevice does not support the videoQuality, it will use the default value.


//是否显示拍照时,对相机控制的组件。比如闪光灯按钮,前后摄像头切换按钮,开始按钮。默认是显示

UIImagePickerControllerSourceTypeCamera.

@property(nonatomic)           BOOL                                  showsCameraControls NS_AVAILABLE_IOS(3_1);   // set to NO to hide all standard camera UI. default is YES


//拍摄的时候(照片或者视频都有)会在相机上添加覆盖物

@property(nullable, nonatomic,strong) __kindof UIView                *cameraOverlayView  NS_AVAILABLE_IOS(3_1);   // set a view to overlay the preview view.

@property(nonatomic)           CGAffineTransform                     cameraViewTransform NS_AVAILABLE_IOS(3_1);   // set the transform of the preview view.


- (void)takePicture NS_AVAILABLE_IOS(3_1);

// programatically initiates still image capture. ignored if image capture is in-flight.

// clients can initiate additional captures after receiving -imagePickerController:didFinishPickingMediaWithInfo: delegate callback


//开始拍摄视频(只针对视频)

- (BOOL)startVideoCapture NS_AVAILABLE_IOS(4_0);

//结束拍摄视频

- (void)stopVideoCapture  NS_AVAILABLE_IOS(4_0);


//相机抓取模式:1.拍摄照片 2.拍摄视频

@property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode NS_AVAILABLE_IOS(4_0); // default is UIImagePickerControllerCameraCaptureModePhoto


//摄像头类型 1.后置摄像头 2.前置摄像头

@property(nonatomic) UIImagePickerControllerCameraDevice      cameraDevice      NS_AVAILABLE_IOS(4_0); // default is UIImagePickerControllerCameraDeviceRear


//闪光灯是否打开类型

@property(nonatomic) UIImagePickerControllerCameraFlashMode   cameraFlashMode   NS_AVAILABLE_IOS(4_0); // default is UIImagePickerControllerCameraFlashModeAuto.

// cameraFlashMode controls the still-image flash when cameraCaptureMode is Photo. cameraFlashMode controls the video torch when cameraCaptureMode is Video.


@end


@protocol UIImagePickerControllerDelegate<NSObject>

@optional

//用户选择照片(视频)之后的回调代理

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfo NS_DEPRECATED_IOS(2_0, 3_0);

//用户选择照片(视频)之后的回调代理

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;

//用户取消选择照片(视频)之后的回调代理

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;


@end



//添加图片到用户的相册中。是否成功的回调方法需要自己写

UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, __nullable id completionTarget, __nullable SEL completionSelector, void * __nullable contextInfo) ;


// Is a specific video eligible to be saved to the saved photos album?

UIKIT_EXTERN BOOL UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath) NS_AVAILABLE_IOS(3_1) __TVOS_PROHIBITED;


// 添加视频到用户的相册。The optional completionSelector should have the form:

//  - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

UIKIT_EXTERN void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, __nullable id completionTarget, __nullable SEL completionSelector, void * __nullable contextInfo) NS_AVAILABLE_IOS(3_1) __TVOS_PROHIBITED;



0 0
原创粉丝点击