HXPhotoConfiguration.h 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. //
  2. // HXPhotoConfiguration.h
  3. // HXPhotoPickerExample
  4. //
  5. // Created by Silence on 2017/11/21.
  6. // Copyright © 2017年 Silence. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "HXPhotoTypes.h"
  10. #import "HXPhotoEditConfiguration.h"
  11. @class
  12. HXPhotoBottomView,
  13. HXPhotoPreviewBottomView,
  14. HXPhotoManager,
  15. HXPhotoModel,
  16. HXPhotoPreviewViewController;
  17. @interface HXPhotoConfiguration : NSObject
  18. /// 配置类型
  19. /// 一键配置UI和选择逻辑
  20. @property (assign, nonatomic) HXConfigurationType type;
  21. /// 查看LivePhoto是否自动播放,为NO时需要长按才可播放
  22. @property (assign, nonatomic) BOOL livePhotoAutoPlay;
  23. /// 预览大图时允许不先加载小图,直接加载原图
  24. @property (assign, nonatomic) BOOL allowPreviewDirectLoadOriginalImage;
  25. /// 允许滑动的方式选择资源 - 默认允许
  26. /// 类似系统相册和QQ滑动选择逻辑
  27. @property (assign, nonatomic) BOOL allowSlidingSelection;
  28. /// 照片列表取消按钮的位置
  29. /// 只在 albumShowMode = HXPhotoAlbumShowModePopup 时有效
  30. @property (assign, nonatomic) HXPhotoListCancelButtonLocationType photoListCancelLocation;
  31. /// 照片编辑配置
  32. @property (strong, nonatomic) HXPhotoEditConfiguration *photoEditConfigur;
  33. /// 相机界面是否开启定位 默认 YES
  34. @property (assign, nonatomic) BOOL cameraCanLocation;
  35. /// 在系统相册删除资源时是否同步删除已选的同一资源
  36. //@property (assign, nonatomic) BOOL followSystemDeleteAssetToDeleteSelectAsset;
  37. /// 是否使用仿微信的照片编辑 默认YES
  38. @property (assign, nonatomic) BOOL useWxPhotoEdit;
  39. /// 选择网络视频时超出限制时长时是否裁剪 默认NO
  40. @property (assign, nonatomic) BOOL selectNetworkVideoCanEdit;
  41. /// 相机拍照点击完成之后是否跳转编辑界面进行编辑
  42. @property (assign, nonatomic) BOOL cameraPhotoJumpEdit;
  43. /// 旧版照片编辑才有效
  44. /// 照片编辑时底部比例选项
  45. /// 默认: @[@{@"原始值" : @"{0, 0}"},
  46. /// @{@"正方形" : @"{1, 1}"},
  47. /// @{@"2:3" : @"{2, 3}"},
  48. /// @{@"3:4" : @"{3, 4}"},
  49. /// @{@"9:16" : @"{9, 16}"},
  50. /// @{@"16:9" : @"{16, 9}"}]
  51. @property (copy, nonatomic) NSArray *photoEditCustomRatios;
  52. /// 编辑后的照片/视频是否添加到系统相册中
  53. /// 只对旧版编辑有效
  54. /// 默认为NO
  55. @property (assign, nonatomic) BOOL editAssetSaveSystemAblum;
  56. /// 预览视频时是否先下载视频再播放
  57. /// 只有当项目有AFNetworking网络框架的时候才有用
  58. /// pod导入时为 HXPhotoPicker/SDWebImage_AF 或 HXPhotoPicker/YYWebImage_AF
  59. @property (assign, nonatomic) BOOL downloadNetworkVideo;
  60. /// 预览视频时是否自动播放
  61. @property (assign, nonatomic) HXVideoAutoPlayType videoAutoPlayType;
  62. /// 相机聚焦框、完成按钮、录制进度的颜色
  63. @property (strong, nonatomic) UIColor *cameraFocusBoxColor;
  64. /// 选择视频时超出限制时长是否自动跳转编辑界面
  65. /// 视频可以编辑时有效
  66. @property (assign, nonatomic) BOOL selectVideoBeyondTheLimitTimeAutoEdit;
  67. /// 选择视频时是否限制照片大小
  68. @property (assign, nonatomic) BOOL selectVideoLimitSize;
  69. /// 限制视频的大小 单位:b 字节
  70. /// 默认 0字节 不限制
  71. /// 网络视频不限制
  72. @property (assign, nonatomic) NSUInteger limitVideoSize;
  73. /// 选择照片时是否限制照片大小
  74. @property (assign, nonatomic) BOOL selectPhotoLimitSize;
  75. /// 限制照片的大小 单位:b 字节
  76. /// 默认 0字节 不限制
  77. /// 网络图片不限制
  78. @property (assign, nonatomic) NSUInteger limitPhotoSize;
  79. /// 相机界面默认前置摄像头
  80. @property (assign, nonatomic) BOOL defaultFrontCamera;
  81. /// 在照片列表选择照片完后点击完成时是否请求图片和视频地址
  82. /// 如果需要下载网络图片 [HXPhotoCommon photoCommon].requestNetworkAfter 设置为YES;
  83. /// 选中了原图则是原图,没选中则是高清图
  84. /// 并赋值给model的 thumbPhoto / previewPhoto / videoURL 属性
  85. /// 如果资源为视频 thumbPhoto 和 previewPhoto 就是视频封面
  86. /// model.videoURL 为视频地址
  87. @property (assign, nonatomic) BOOL requestImageAfterFinishingSelection;
  88. /// 当原图按钮隐藏时获取地址时是否请求原图
  89. /// 为YES时 requestImageAfterFinishingSelection 获取的原图
  90. /// 为NO时 requestImageAfterFinishingSelection 获取的不是原图
  91. @property (assign, nonatomic) BOOL requestOriginalImage;
  92. /// 当 requestImageAfterFinishingSelection = YES 并且选中的原图,导出的视频是否为最高质量
  93. /// 如果视频很大的话,导出高质量会很耗时
  94. /// 默认为NO
  95. @property (assign, nonatomic) BOOL exportVideoURLForHighestQuality;
  96. /// 自定义相机内部拍照/录制类型
  97. @property (assign, nonatomic) HXPhotoCustomCameraType customCameraType;
  98. /// 跳转预览界面时动画起始的view,使用方法参考demo12里的外部预览功能
  99. @property (copy, nonatomic) UIView * (^customPreviewFromView)(NSInteger currentIndex);
  100. /// 跳转预览界面时动画起始的frame
  101. @property (copy, nonatomic) CGRect (^customPreviewFromRect)(NSInteger currentIndex);
  102. /// 跳转预览界面时展现动画的image,使用方法参考demo12里的外部预览功能
  103. @property (copy, nonatomic) UIImage * (^customPreviewFromImage)(NSInteger currentIndex);
  104. /// 退出预览界面时终点view,使用方法参考demo12里的外部预览功能
  105. @property (copy, nonatomic) UIView * (^customPreviewToView)(NSInteger currentIndex);
  106. /// 暗黑模式下照片列表cell上选择按钮选中之后的数字标题颜色
  107. @property (strong, nonatomic) UIColor *cellDarkSelectTitleColor;
  108. /// 暗黑模式下照片列表cell上选择按钮选中之后的按钮背景颜色
  109. @property (strong, nonatomic) UIColor *cellDarkSelectBgColor;
  110. /// 暗黑模式下预览大图右上角选择按钮选中之后的数字标题颜色
  111. @property (strong, nonatomic) UIColor *previewDarkSelectTitleColor;
  112. /// 暗黑模式下预览大图右上角选择按钮选中之后的按钮背景颜色
  113. @property (strong, nonatomic) UIColor *previewDarkSelectBgColor;
  114. /// 相册风格
  115. @property (assign, nonatomic) HXPhotoStyle photoStyle;
  116. /// 拍摄的画质 默认 AVCaptureSessionPreset1280x720
  117. @property (copy, nonatomic) NSString *sessionPreset;
  118. /// 使用框架自带的相机录制视频时设置的编码格式, ios11以上
  119. /// iphone7及以上时系统默认AVVideoCodecHEVC
  120. /// HEVC仅支持iPhone 7及以上设备
  121. /// iphone6、6s 都不支持H.265,软解H265视频只有声音没有画面
  122. /// 当iphone7以下机型出现只有声音没有画面的问题,请将这个值设置为AVVideoCodecH264
  123. /// 替换成系统相机也可以解决
  124. @property (copy, nonatomic) NSString *videoCodecKey;
  125. /// 原图按钮显示已选照片的大小
  126. @property (assign, nonatomic) BOOL showOriginalBytes;
  127. /// 原图按钮显示已选照片大小时是否显示加载菊花
  128. @property (assign, nonatomic) BOOL showOriginalBytesLoading;
  129. /// 导出裁剪视频的质量
  130. /// iPhoneX -> AVAssetExportPresetHighestQuality
  131. @property (copy, nonatomic) NSString *editVideoExportPresetName DEPRECATED_MSG_ATTRIBUTE("Invalid attribute, use editVideoExportPreset and videoQuality");
  132. /// 导出裁剪视频的分辨率 默认 HXVideoEditorExportPresetRatio_960x540
  133. @property (assign, nonatomic) HXVideoEditorExportPreset editVideoExportPreset;
  134. /// 导出裁剪视频的质量[0-10] 默认 6
  135. @property (assign, nonatomic) NSInteger videoQuality;
  136. /// 编辑视频时裁剪的最小秒数,如果小于1秒,则为1秒
  137. @property (assign, nonatomic) NSInteger minVideoClippingTime;
  138. /// 编辑视频时裁剪的最大秒数 - default 15s
  139. /// 如果超过视频时长,则为视频时长
  140. @property (assign, nonatomic) NSInteger maxVideoClippingTime;
  141. /// 预览大图时的长按响应事件
  142. /// previewViewController.outside
  143. /// yes -> use HXPhotoView preview
  144. /// no -> use HXPhotoViewController preview
  145. @property (copy, nonatomic) void (^ previewRespondsToLongPress)(UILongPressGestureRecognizer *longPress, HXPhotoModel *photoModel, HXPhotoManager *manager, HXPhotoPreviewViewController *previewViewController);
  146. /// 语言类型
  147. @property (assign, nonatomic) HXPhotoLanguageType languageType;
  148. /// 如果选择完照片返回之后
  149. /// 原有界面继承UIScrollView的视图都往下偏移一个导航栏距离的话
  150. /// 那么请将这个属性设置为YES,即可恢复。
  151. /// v2.3.7 之后的版本内部自动修复了
  152. @property (assign, nonatomic) BOOL restoreNavigationBar DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  153. /// 照片列表是否按照片创建日期排序
  154. @property (assign, nonatomic) BOOL creationDateSort;
  155. /// 相册列表展示方式
  156. @property (assign, nonatomic) HXPhotoAlbumShowMode albumShowMode;
  157. /// 模型数组保存草稿时存在本地的文件名称 default HXPhotoPickerModelArray
  158. /// 如果有多个地方保存了草稿请设置不同的fileName
  159. @property (copy, nonatomic) NSString *localFileName;
  160. /// 只针对 照片、视频不能同时选并且视频只能选择1个的时候隐藏掉视频cell右上角的选择按钮
  161. @property (assign, nonatomic) BOOL specialModeNeedHideVideoSelectBtn;
  162. /// 视频是否可以编辑 default YES
  163. @property (assign, nonatomic) BOOL videoCanEdit;
  164. /// 是否替换照片编辑界面 default NO
  165. @property (assign, nonatomic) BOOL replacePhotoEditViewController;
  166. /// 图片编辑完成调用这个block 传入模型
  167. /// beforeModel 编辑之前的模型
  168. /// afterModel 编辑之后的模型
  169. @property (copy, nonatomic) void (^usePhotoEditComplete)(HXPhotoModel *beforeModel, HXPhotoModel *afterModel);
  170. /// 是否替换视频编辑界面 default NO
  171. @property (assign, nonatomic) BOOL replaceVideoEditViewController;
  172. /// 将要跳转编辑界面 在block内实现跳转
  173. /// isOutside 是否是HXPhotoView预览时的编辑
  174. /// beforeModel 编辑之前的模型
  175. @property (copy, nonatomic) void (^shouldUseEditAsset)(UIViewController *viewController, BOOL isOutside, HXPhotoManager *manager, HXPhotoModel *beforeModel);
  176. /// 视频编辑完成调用这个block 传入模型
  177. /// beforeModel 编辑之前的模型
  178. /// afterModel 编辑之后的模型
  179. @property (copy, nonatomic) void (^useVideoEditComplete)(HXPhotoModel *beforeModel, HXPhotoModel *afterModel);
  180. /// 照片是否可以编辑 default YES
  181. @property (assign, nonatomic) BOOL photoCanEdit;
  182. /// push动画时长 default 0.45f
  183. @property (assign, nonatomic) NSTimeInterval pushTransitionDuration;
  184. /// pop动画时长 default 0.35f
  185. @property (assign, nonatomic) NSTimeInterval popTransitionDuration;
  186. /// 手势松开时返回的动画时长 default 0.35f
  187. @property (assign, nonatomic) NSTimeInterval popInteractiveTransitionDuration;
  188. /// 旧版照片编辑才有效
  189. /// 是否可移动的裁剪框
  190. @property (assign, nonatomic) BOOL movableCropBox;
  191. /// 旧版照片编辑才有效
  192. /// 可移动的裁剪框是否可以编辑大小
  193. @property (assign, nonatomic) BOOL movableCropBoxEditSize;
  194. /// 旧版照片编辑才有效
  195. /// 可移动裁剪框的比例 (w,h) 一定要是宽比高哦!!!
  196. /// 当 movableCropBox = YES && movableCropBoxEditSize = YES 如果不设置比例即可自由编辑大小
  197. @property (assign, nonatomic) CGPoint movableCropBoxCustomRatio;
  198. /// 是否替换相机控制器
  199. /// 使用自己的相机时需要调用下面两个block
  200. @property (assign, nonatomic) BOOL replaceCameraViewController;
  201. /**
  202. 将要跳转相机界面 在block内实现跳转
  203. demo1 里有示例(使用的是系统相机)
  204. */
  205. @property (copy, nonatomic) void (^shouldUseCamera)(UIViewController *viewController, HXPhotoConfigurationCameraType cameraType, HXPhotoManager *manager);
  206. /**
  207. 相机拍照完成调用这个block 传入模型
  208. */
  209. @property (copy, nonatomic) void (^useCameraComplete)(HXPhotoModel *model);
  210. #pragma mark - < UI相关 >
  211. /// 相册权限为选择部分时,照片列表添加cell的背景颜色
  212. @property (strong, nonatomic) UIColor *photoListLimitCellBackgroundColor;
  213. /// 相册权限为选择部分时,照片列表添加cell暗黑模式下的背景颜色
  214. @property (strong, nonatomic) UIColor *photoListLimitCellBackgroundDarkColor;
  215. /// 相册权限为选择部分时,照片列表添加cell的加号颜色
  216. @property (strong, nonatomic) UIColor *photoListLimitCellLineColor;
  217. /// 相册权限为选择部分时,照片列表添加cell暗黑模式下的加号颜色
  218. @property (strong, nonatomic) UIColor *photoListLimitCellLineDarkColor;
  219. /// 相册权限为选择部分时,照片列表添加cell的文字颜色
  220. @property (strong, nonatomic) UIColor *photoListLimitCellTextColor;
  221. /// 相册权限为选择部分时,照片列表添加cell暗黑模式下的文字颜色
  222. @property (strong, nonatomic) UIColor *photoListLimitCellTextDarkColor;
  223. /// 相册权限为选择部分时,照片列表添加cell的文字字体
  224. @property (strong, nonatomic) UIFont *photoListLimitCellTextFont;
  225. /// 限制提示视图:背景样式
  226. @property (assign, nonatomic) UIBlurEffectStyle photoListLimitBlurStyle;
  227. /// 限制提示视图:文本颜色
  228. @property (strong, nonatomic) UIColor *photoListLimitTextColor;
  229. /// 限制提示视图:设置按钮颜色
  230. @property (strong, nonatomic) UIColor *photoListLimitSettingColor;
  231. /// 限制提示视图:关闭按钮颜色
  232. @property (strong, nonatomic) UIColor *photoListLimitCloseColor;
  233. /// 照片列表上相机cell上的相机未预览时的图标
  234. @property (copy, nonatomic) NSString *photoListTakePhotoNormalImageNamed;
  235. /// 照片列表上相机cell上的相机还是预览时的图标
  236. @property (copy, nonatomic) NSString *photoListTakePhotoSelectImageNamed;
  237. /// 照片列表上相机cell的背景颜色
  238. @property (strong, nonatomic) UIColor *photoListTakePhotoBgColor;
  239. /// 未授权时界面上提示文字显示的颜色
  240. @property (strong, nonatomic) UIColor *authorizationTipColor;
  241. /**
  242. 弹窗方式的相册列表竖屏时的高度
  243. */
  244. @property (assign, nonatomic) CGFloat popupTableViewHeight;
  245. /**
  246. 弹窗方式的相册列表的背景颜色
  247. */
  248. @property (strong, nonatomic) UIColor *popupTableViewBgColor;
  249. /**
  250. 弹窗方式的相册列表横屏时的高度
  251. */
  252. @property (assign, nonatomic) CGFloat popupTableViewHorizontalHeight;
  253. /**
  254. 弹窗方式的相册列表Cell选中的颜色
  255. */
  256. @property (strong, nonatomic) UIColor *popupTableViewCellSelectColor;
  257. /**
  258. 弹窗方式的相册列表Cell选中时的图标颜色
  259. */
  260. @property (strong, nonatomic) UIColor *popupTableViewCellSelectIconColor;
  261. /**
  262. 弹窗方式的相册列表Cell高亮的颜色
  263. */
  264. @property (strong, nonatomic) UIColor *popupTableViewCellHighlightedColor;
  265. /**
  266. 弹窗方式的相册列表Cell底部线的颜色
  267. */
  268. @property (strong, nonatomic) UIColor *popupTableViewCellLineColor;
  269. /**
  270. 弹窗方式的相册列表Cell的背景颜色
  271. */
  272. @property (strong, nonatomic) UIColor *popupTableViewCellBgColor;
  273. /**
  274. 弹窗方式的相册列表Cell上相册名称的颜色
  275. */
  276. @property (strong, nonatomic) UIColor *popupTableViewCellAlbumNameColor;
  277. /**
  278. 弹窗方式的相册列表Cell上相册名称的字体
  279. */
  280. @property (strong, nonatomic) UIFont *popupTableViewCellAlbumNameFont;
  281. /**
  282. 弹窗方式的相册列表Cell上照片数量的颜色
  283. */
  284. @property (strong, nonatomic) UIColor *popupTableViewCellPhotoCountColor;
  285. /**
  286. 弹窗方式的相册列表Cell上照片数量的字体
  287. */
  288. @property (strong, nonatomic) UIFont *popupTableViewCellPhotoCountFont;
  289. /**
  290. 弹窗方式的相册列表Cell的高度
  291. */
  292. @property (assign, nonatomic) CGFloat popupTableViewCellHeight;
  293. /**
  294. 显示底部照片数量信息 default YES
  295. */
  296. @property (assign, nonatomic) BOOL showBottomPhotoDetail;
  297. /**
  298. 完成按钮是否显示详情 default YES
  299. */
  300. @property (assign, nonatomic) BOOL doneBtnShowDetail;
  301. /**
  302. 是否支持旋转 默认YES
  303. - 如果不需要建议设置成NO
  304. */
  305. @property (assign, nonatomic) BOOL supportRotation;
  306. /**
  307. 状态栏样式 默认 UIStatusBarStyleDefault
  308. */
  309. @property (assign, nonatomic) UIStatusBarStyle statusBarStyle;
  310. /**
  311. cell选中时的背景颜色
  312. */
  313. @property (strong, nonatomic) UIColor *cellSelectedBgColor;
  314. /**
  315. cell选中时的文字颜色
  316. */
  317. @property (strong, nonatomic) UIColor *cellSelectedTitleColor;
  318. /**
  319. 选中时数字的颜色
  320. */
  321. @property (strong, nonatomic) UIColor *selectedTitleColor;
  322. /// 预览界面选择按钮的背景颜色
  323. @property (strong, nonatomic) UIColor *previewSelectedBtnBgColor;
  324. /// sectionHeader悬浮时的标题颜色
  325. /// 3.0.3之后的版本已移除此功能
  326. @property (strong, nonatomic) UIColor *sectionHeaderSuspensionTitleColor DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  327. /// sectionHeader悬浮时的背景色
  328. /// 3.0.3之后的版本已移除此功能
  329. @property (strong, nonatomic) UIColor *sectionHeaderSuspensionBgColor DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  330. /// 导航栏标题颜色
  331. @property (strong, nonatomic) UIColor *navigationTitleColor;
  332. /// 照片列表导航栏标题箭头颜色
  333. @property (strong, nonatomic) UIColor *navigationTitleArrowColor;
  334. /// 暗黑模式下照片列表导航栏标题箭头颜色
  335. @property (strong, nonatomic) UIColor *navigationTitleArrowDarkColor;
  336. /// 导航栏是否半透明
  337. @property (assign, nonatomic) BOOL navBarTranslucent;
  338. /// 导航栏背景颜色
  339. @property (strong, nonatomic) UIColor *navBarBackgroudColor;
  340. /// 导航栏样式
  341. @property(nonatomic,assign) UIBarStyle navBarStyle;
  342. /// 导航栏背景图片
  343. @property (strong, nonatomic) UIImage *navBarBackgroundImage;
  344. #pragma mark - < 自定义titleView >
  345. /// 自定义照片列表导航栏titleView
  346. /// albumShowMode == HXPhotoAlbumShowModePopup 时才有效
  347. @property (copy, nonatomic) UIView *(^ photoListTitleView)(NSString *title);
  348. /// 更新照片列表导航栏title
  349. @property (copy, nonatomic) void (^ updatePhotoListTitle)(NSString *title);
  350. /// 照片列表改变titleView选中状态
  351. @property (copy, nonatomic) void (^ photoListChangeTitleViewSelected)(BOOL selected);
  352. /// 获取照片列表导航栏titleView的选中状态
  353. @property (copy, nonatomic) BOOL (^ photoListTitleViewSelected)(void);
  354. /// 照片列表titleView点击事件
  355. @property (copy, nonatomic) void (^ photoListTitleViewAction)(BOOL selected);
  356. /// 照片列表背景颜色
  357. @property (strong, nonatomic) UIColor *photoListViewBgColor;
  358. /// 照片列表底部照片数量文字颜色
  359. @property (strong, nonatomic) UIColor *photoListBottomPhotoCountTextColor;
  360. /// 预览照片界面背景颜色
  361. @property (strong, nonatomic) UIColor *previewPhotoViewBgColor;
  362. /// 相册列表背景颜色
  363. @property (strong, nonatomic) UIColor *albumListViewBgColor;
  364. /// 相册列表cell背景颜色
  365. @property (strong, nonatomic) UIColor *albumListViewCellBgColor;
  366. /// 相册列表cell上文字颜色
  367. @property (strong, nonatomic) UIColor *albumListViewCellTextColor;
  368. /// 相册列表cell选中颜色
  369. @property (strong, nonatomic) UIColor *albumListViewCellSelectBgColor;
  370. /// 相册列表cell底部线颜色
  371. @property (strong, nonatomic) UIColor *albumListViewCellLineColor;
  372. /// 3.0.3之后的版本已移除此功能
  373. @property (assign, nonatomic) BOOL sectionHeaderTranslucent DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  374. /// 导航栏标题颜色是否与主题色同步 默认NO
  375. /// 同步会过滤掉手动设置的导航栏标题颜色
  376. @property (assign, nonatomic) BOOL navigationTitleSynchColor;
  377. /// 底部视图的背景颜色
  378. @property (strong, nonatomic) UIColor *bottomViewBgColor;
  379. /// 底部视图的样式
  380. @property(nonatomic,assign) UIBarStyle bottomViewBarStyle;
  381. /// 底部完成按钮背景颜色
  382. @property (strong, nonatomic) UIColor *bottomDoneBtnBgColor;
  383. /// 底部完成按钮暗黑模式下的背景颜色
  384. @property (strong, nonatomic) UIColor *bottomDoneBtnDarkBgColor;
  385. /// 底部完成按钮禁用状态下的背景颜色
  386. @property (strong, nonatomic) UIColor *bottomDoneBtnEnabledBgColor;
  387. /// 底部完成按钮文字颜色
  388. @property (strong, nonatomic) UIColor *bottomDoneBtnTitleColor;
  389. /// 底部视图是否半透明效果 默认YES
  390. @property (assign, nonatomic) BOOL bottomViewTranslucent;
  391. /// 主题颜色 默认 tintColor
  392. @property (strong, nonatomic) UIColor *themeColor;
  393. /// 预览界面底部已选照片的选中颜色
  394. @property (strong, nonatomic) UIColor *previewBottomSelectColor;
  395. /// 是否可以改变原图按钮的tinColor
  396. @property (assign, nonatomic) BOOL changeOriginalTinColor;
  397. /// 原图按钮普通状态下的按钮图标名
  398. /// 改变主题颜色后建议也改下原图按钮的图标
  399. @property (copy, nonatomic) NSString *originalNormalImageName;
  400. /// 原图按钮图片的tintColor,设置这个颜色可改变图片的颜色
  401. @property (strong, nonatomic) UIColor *originalBtnImageTintColor;
  402. /// 原图按钮选中状态下的按钮图标名
  403. /// 改变主题颜色后建议也改下原图按钮的图标
  404. @property (copy, nonatomic) NSString *originalSelectedImageName;
  405. /// 是否隐藏原图按钮 默认 NO
  406. @property (assign, nonatomic) BOOL hideOriginalBtn;
  407. /// sectionHeader 是否显示照片的位置信息
  408. /// 3.0.3之后的版本已移除此功能
  409. @property (assign, nonatomic) BOOL sectionHeaderShowPhotoLocation DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  410. /**
  411. 相机cell是否显示预览
  412. 屏幕宽 320 -> NO
  413. other -> YES
  414. */
  415. @property (assign, nonatomic) BOOL cameraCellShowPreview;
  416. /**
  417. 横屏时是否隐藏状态栏 默认显示 暂不支持修改
  418. */
  419. //@property (assign, nonatomic) BOOL horizontalHideStatusBar;
  420. /**
  421. 横屏时相册每行个数 默认6个
  422. */
  423. @property (assign, nonatomic) NSInteger horizontalRowCount;
  424. /**
  425. 是否需要显示日期section 默认NO
  426. */
  427. @property (assign, nonatomic) BOOL showDateSectionHeader;
  428. /// 照片列表倒序
  429. @property (assign, nonatomic) BOOL reverseDate;
  430. #pragma mark - < 基本配置 >
  431. /**
  432. 相册列表每行多少个照片 默认4个 iphone 4s / 5 默认3个
  433. */
  434. @property (assign, nonatomic) NSUInteger rowCount;
  435. /**
  436. 最大选择数 - 必填
  437. 如果照片最大数和视频最大数都为0时,则可以混合添加
  438. 当照片选了1张时 视频就还可以选择9个
  439. 当照片选了5张时 视频就还可以选择5个
  440. 视频同理
  441. */
  442. @property (assign, nonatomic) NSUInteger maxNum;
  443. /**
  444. 照片最大选择数 默认9 - 必填
  445. 如果为0时,最大数则为maxNum 减去 视频已选数
  446. */
  447. @property (assign, nonatomic) NSUInteger photoMaxNum;
  448. /**
  449. 视频最大选择数 默认1 - 必填
  450. 如果为0时,最大数则为maxNum 减去 照片已选数
  451. */
  452. @property (assign, nonatomic) NSUInteger videoMaxNum;
  453. /**
  454. 是否打开相机功能
  455. */
  456. @property (assign, nonatomic) BOOL openCamera;
  457. /**
  458. 是否开启查看GIF图片功能 - 默认开启
  459. */
  460. @property (assign, nonatomic) BOOL lookGifPhoto;
  461. /**
  462. 是否开启查看LivePhoto功能呢 - 默认 NO
  463. */
  464. @property (assign, nonatomic) BOOL lookLivePhoto;
  465. /**
  466. 图片和视频是否能够同时选择 默认 NO
  467. */
  468. @property (assign, nonatomic) BOOL selectTogether;
  469. /**
  470. 相机视频录制最大秒数 - 默认60s
  471. */
  472. @property (assign, nonatomic) NSTimeInterval videoMaximumDuration;
  473. /**
  474. 相机视频录制最小秒数 - 默认3s
  475. */
  476. @property (assign, nonatomic) NSTimeInterval videoMinimumDuration;
  477. /**
  478. * 删除临时的照片/视频 -
  479. 注:相机拍摄的照片并没有保存到系统相册 或 是本地图片
  480. 如果当这样的照片都没有被选中时会清空这些照片 有一张选中了就不会删..
  481. - 默认 NO
  482. */
  483. @property (assign, nonatomic) BOOL deleteTemporaryPhoto;
  484. /**
  485. * 拍摄的 照片/视频 是否保存到系统相册 默认NO
  486. * 支持添加到自定义相册 - (需9.0以上)
  487. */
  488. @property (assign, nonatomic) BOOL saveSystemAblum;
  489. /// 拍摄的照片/视频保存到指定相册的名称 默认 DisplayName
  490. /// 需9.0以上系统才可以保存到自定义相册 , 以下的系统只保存到相机胶卷...
  491. @property (copy, nonatomic) NSString *customAlbumName;
  492. /// 视频能选择的最大秒数 - 默认 3分钟/180秒
  493. /// 当视频超过能选的最大时长,如果视频可以编辑那么在列表选择的时候会自动跳转视频裁剪界面
  494. @property (assign, nonatomic) NSInteger videoMaximumSelectDuration;
  495. /// 视频能选择的最小秒数 - 默认 0秒 - 不限制
  496. @property (assign, nonatomic) NSInteger videoMinimumSelectDuration;
  497. /// 是否为单选模式 默认 NO HXPhotoView 不支持
  498. @property (assign, nonatomic) BOOL singleSelected;
  499. /// 单选模式下选择图片时是否直接跳转到编辑界面 - 默认 NO
  500. @property (assign, nonatomic) BOOL singleJumpEdit;
  501. /// 是否开启3DTouch预览功能 默认 YES
  502. @property (assign, nonatomic) BOOL open3DTouchPreview;
  503. /// 下载iCloud上的资源
  504. /// 3.0.3 之后的版本已无效
  505. @property (assign, nonatomic) BOOL downloadICloudAsset DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  506. /// 是否过滤iCloud上的资源
  507. /// 3.0.3 之后的版本已无效
  508. @property (assign, nonatomic) BOOL filtrationICloudAsset DEPRECATED_MSG_ATTRIBUTE("Invalid attribute");
  509. /// 列表小图照片清晰度 越大越清晰、越消耗性能
  510. /// 设置太大的话获取图片资源时耗时长且内存消耗大可能会引起界面卡顿
  511. @property (assign, nonatomic) CGFloat clarityScale;
  512. #pragma mark - < block返回的视图 >
  513. /// 设置导航栏
  514. @property (copy, nonatomic) void (^navigationBar)(UINavigationBar *navigationBar, UIViewController *viewController);
  515. /// 照片列表底部View
  516. @property (copy, nonatomic) void (^photoListBottomView)(HXPhotoBottomView *bottomView);
  517. /// 预览界面底部View
  518. @property (copy, nonatomic) void (^previewBottomView)(HXPhotoPreviewBottomView *bottomView);
  519. /// 相册列表的collectionView
  520. /// 旋转屏幕时也会调用
  521. @property (copy, nonatomic) void (^albumListCollectionView)(UICollectionView *collectionView);
  522. /// 相册列表的tableView
  523. /// 旋转屏幕时也会调用
  524. @property (copy, nonatomic) void (^albumListTableView)(UITableView *tableView);
  525. /// 弹窗样式的相册列表
  526. /// 旋转屏幕时也会调用
  527. @property (copy, nonatomic) void (^popupAlbumTableView)(UITableView *tableView);
  528. /// 相片列表的collectionView
  529. /// 旋转屏幕时也会调用
  530. @property (copy, nonatomic) void (^photoListCollectionView)(UICollectionView *collectionView);
  531. /// 预览界面的collectionView
  532. /// 旋转屏幕时也会调用
  533. @property (copy, nonatomic) void (^previewCollectionView)(UICollectionView *collectionView);
  534. @end