图片采集
// UIImagePickerController.h
在命名控制器时不需要view了吗?
// UIKit
//
// Copyright (c) 2008-2015 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UINavigationController.h>
#import <UIKit/UIKitDefines.h>
NS_ASSUME_NONNULL_BEGIN
@class UIImage;
//委托代理类前声明
@protocol UIImagePickerControllerDelegate;
typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum
} __TVOS_PROHIBITED;
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
UIImagePickerControllerQualityTypeIFrame1280x720NS_ENUM_AVAILABLE_IOS(5_0) =4,
UIImagePickerControllerQualityTypeIFrame960x540NS_ENUM_AVAILABLE_IOS(5_0) =5,
} __TVOS_PROHIBITED;
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {
UIImagePickerControllerCameraCaptureModePhoto,
UIImagePickerControllerCameraCaptureModeVideo
} __TVOS_PROHIBITED;
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
UIImagePickerControllerCameraDeviceRear,
UIImagePickerControllerCameraDeviceFront
} __TVOS_PROHIBITED;
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 UIImagePickerControllerLivePhotoNS_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)
某源有什么媒体功能
+ (nullableNSArray<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.
前后摄像头捕捉类型
+ (nullableNSArray<NSNumber *> *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDeviceNS_AVAILABLE_IOS(4_0);// returns array of NSNumbers (UIImagePickerControllerCameraCaptureMode)
多重代理
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate,UIImagePickerControllerDelegate> delegate;
@property(nonatomic) UIImagePickerControllerSourceType sourceType; // default value is UIImagePickerControllerSourceTypePhotoLibrary.
@property(nonatomic,copy) NSArray<NSString *> *mediaTypes;
// default value is an array containing kUTTypeImage.
@property(nonatomic) BOOL allowsEditingNS_AVAILABLE_IOS(3_1); // replacement for -allowsImageEditing; default value is NO.
@property(nonatomic) BOOL allowsImageEditingNS_DEPRECATED_IOS(2_0,3_1);
// video properties apply only if mediaTypes includes kUTTypeMovie
@property(nonatomic) NSTimeInterval videoMaximumDurationNS_AVAILABLE_IOS(3_1);// default value is 10 minutes.
@property(nonatomic) UIImagePickerControllerQualityType videoQualityNS_AVAILABLE_IOS(3_1); // default value is UIImagePickerControllerQualityTypeMedium. If the cameraDevice does not support the videoQuality, it will use the default value.
// camera additions available only if sourceType is UIImagePickerControllerSourceTypeCamera.
是否显示照相机控制按钮 多用在二维码扫面上
@property(nonatomic) BOOL showsCameraControlsNS_AVAILABLE_IOS(3_1); // set to NO to hide all standard camera UI. default is YES
给照相机画面添加遮盖view 多用在二维码扫面上
@property(nullable,nonatomic,strong)__kindof UIView *cameraOverlayView NS_AVAILABLE_IOS(3_1); // set a view to overlay the preview view.
设置transform
@property(nonatomic) CGAffineTransform cameraViewTransformNS_AVAILABLE_IOS(3_1); // set the transform of the preview view.
动态获取图片吧
- (void)takePictureNS_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)startVideoCaptureNS_AVAILABLE_IOS(4_0);
- (void)stopVideoCapture NS_AVAILABLE_IOS(4_0);
@property(nonatomic)UIImagePickerControllerCameraCaptureMode cameraCaptureModeNS_AVAILABLE_IOS(4_0);// default is UIImagePickerControllerCameraCaptureModePhoto
@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
__TVOS_PROHIBITED @protocol UIImagePickerControllerDelegate<NSObject>
@optional
// The picker does not dismiss itself; the client dismisses it in these callbacks.
// The delegate will receive one or the other, but not both, depending whether the user
// confirms or cancels.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfoNS_DEPRECATED_IOS(2_0,3_0);
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
@end
图片保存到相册
// Adds a photo to the saved photos album. The optional completionSelector should have the form:
// - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image,__nullable id completionTarget,__nullable SEL completionSelector,void * __nullable contextInfo)__TVOS_PROHIBITED;
// 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;
// Adds a video to the saved photos album. 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;
NS_ASSUME_NONNULL_END