CameraUtility.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // CameraUtility.h
  3. // AIIM
  4. //
  5. // Created by qitewei on 2025/6/5.
  6. //
  7. #import <UIKit/UIKit.h>
  8. #import <Foundation/Foundation.h>
  9. #import <AVFoundation/AVFoundation.h>
  10. #import <MobileCoreServices/MobileCoreServices.h>
  11. NS_ASSUME_NONNULL_BEGIN
  12. typedef NS_ENUM(NSInteger, CameraUtilityFlashMode) {
  13. CameraUtilityFlashModeOff = 0,
  14. CameraUtilityFlashModeOn = 1,
  15. CameraUtilityFlashModeAuto = 2
  16. };
  17. typedef NS_ENUM(NSInteger, CameraAspectRatioMode) {
  18. CameraAspectRatioModeOriginal, // 原始比例
  19. CameraAspectRatioModeScreen, // 匹配屏幕比例
  20. CameraAspectRatioModeSquare // 正方形(可选)
  21. };
  22. @protocol CameraUtilityDelegate <NSObject>
  23. @optional
  24. - (void)cameraUtilityDidFinishTakingPhoto:(UIImage *)photo;
  25. - (void)cameraUtilityDidFinishRecordingVideo:(NSURL *)videoURL;
  26. - (void)cameraUtilityDidOccurError:(NSError *)error;
  27. - (void)cameraUtilityRecordingProgress:(CGFloat)progress;
  28. @end
  29. @interface CameraUtility : NSObject
  30. @property (nonatomic, weak) id<CameraUtilityDelegate> delegate;
  31. @property (nonatomic, assign) CameraUtilityFlashMode flashMode;
  32. @property (nonatomic, assign) CameraAspectRatioMode aspectRatioMode;
  33. @property (nonatomic, assign) BOOL isFrontCamera;
  34. @property (nonatomic, strong) AVCaptureVideoPreviewLayer *previewLayer;
  35. @property (nonatomic, strong, readonly) NSURL *lastVideoOutputURL;
  36. @property (nonatomic, copy) NSString *videoSaveDirectory; // 自定义保存目录
  37. // 初始化方法
  38. - (instancetype)initWithPreviewView:(UIView *)previewView;
  39. // 配置拍摄按钮(处理单击和长按手势)
  40. - (void)configureCaptureButton:(UIButton *)button;
  41. // 开始运行摄像头
  42. - (void)startRunning;
  43. // 停止运行摄像头
  44. - (void)stopRunning;
  45. // 切换摄像头
  46. - (void)switchCamera;
  47. // 手动拍照
  48. - (void)takePhoto;
  49. // 开始录制视频
  50. - (void)startRecordingVideo;
  51. // 停止录制视频
  52. - (void)stopRecordingVideo;
  53. // 清除临时文件
  54. - (void)cleanTempFiles;
  55. @end
  56. NS_ASSUME_NONNULL_END