UIImagePickerController
UIImagePickerController
可以帮助我们调用摄像头拍照或者希望从相册中选择照片。
UIImagePickerController主要属性
@property(nonatomic) UIImagePickerControllerSourceType sourceType;
@property(nonatomic) BOOL allowsEditing;
@property(nonatomic,copy) NSArray<NSString *> *mediaTypes;
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
UIImagePickerControllerSourceType
表示图片获取来源
typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum,
}
相机相关属性
@property(nonatomic) BOOL showsCameraControls;
@property(nullable, nonatomic,strong) UIView *cameraOverlayView;
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {
UIImagePickerControllerCameraCaptureModePhoto,
UIImagePickerControllerCameraCaptureModeVideo
};
@property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode;
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
UIImagePickerControllerCameraDeviceRear,
UIImagePickerControllerCameraDeviceFront
};
@property(nonatomic) UIImagePickerControllerCameraDevice cameraDevice;
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {
UIImagePickerControllerCameraFlashModeOff = -1,
UIImagePickerControllerCameraFlashModeAuto = 0,
UIImagePickerControllerCameraFlashModeOn = 1
};
@property(nonatomic) UIImagePickerControllerCameraFlashMode cameraFlashMode;
@property(nonatomic) NSTimeInterval videoMaximumDuration;
typedef NS_ENUM(NSInteger, UIImagePickerControllerQualityType) {
UIImagePickerControllerQualityTypeHigh = 0,
UIImagePickerControllerQualityTypeMedium = 1,
UIImagePickerControllerQualityTypeLow = 2,
UIImagePickerControllerQualityType640x480 = 3,
UIImagePickerControllerQualityTypeIFrame1280x720 = 4,
UIImagePickerControllerQualityTypeIFrame960x540 = 5,
}
@property(nonatomic) UIImagePickerControllerQualityType videoQuality;
UIImagePickerController主要方法
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;
+ (nullable NSArray<NSString *> *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType;
+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice;
+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice;
+ (nullable NSArray<NSNumber *> *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice;
- (void)takePicture
- (BOOL)startVideoCapture;
- (void)stopVideoCapture;
UIImagePickerController功能
从照片库获取图片
UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
vc.allowsEditing = YES;
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
自拍
UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypeCamera;
vc.cameraDevice = UIImagePickerControllerCameraDeviceFront;
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
录像
UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypeCamera;
vc.mediaTypes = @[@"public.movie"];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
UIImagePickerControllerDelegate
UIImagePickerControllerDelegate
代理协议提供了用户选择图片后的回调方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info {
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage];
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
NSURL *mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
if ([@"public.image" isEqualToString:mediaType]) {
if (editedImage) {
self.pickerImageView.image = editedImage;
} else {
self.pickerImageView.image = originalImage;
}
} else if ([@"public.movie" isEqualToString:mediaType]) {
}
[picker dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:nil];
}
info
包含了采集的图片/视频信息
UIImagePickerControllerInfoKey const UIImagePickerControllerMediaType;
UIImagePickerControllerInfoKey const UIImagePickerControllerOriginalImage;
UIImagePickerControllerInfoKey const UIImagePickerControllerEditedImage;
UIImagePickerControllerInfoKey const UIImagePickerControllerCropRect;
UIImagePickerControllerInfoKey const UIImagePickerControllerMediaURL;
权限
需要在Info.plist
文件中,添加相机、相册和麦克风权限
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)