123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- //
- // HXPhotoView.h
- // HXPhotoPickerExample
- //
- // Created by Silence on 17/2/17.
- // Copyright © 2017年 Silence. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- #import "HXPhotoManager.h"
- #import "HXPhotoSubViewCell.h"
- #import "HXCollectionView.h"
- #import "HXPhotoViewCellCustomProtocol.h"
- #import "HXPhotoViewProtocol.h"
- typedef NS_ENUM(NSUInteger, HXPhotoViewPreViewShowStyle) {
- HXPhotoViewPreViewShowStyleDefault, //!< 默认
- HXPhotoViewPreViewShowStyleDark //!< 暗黑,此样式下视频会有进度条
- };
- @interface HXPhotoView : UIView
- #pragma mark - < init >
- - (instancetype)initWithFrame:(CGRect)frame
- manager:(HXPhotoManager *)manager;
- - (instancetype)initWithFrame:(CGRect)frame
- manager:(HXPhotoManager *)manager
- scrollDirection:(UICollectionViewScrollDirection)scrollDirection;
- - (instancetype)initWithManager:(HXPhotoManager *)manager;
- - (instancetype)initWithManager:(HXPhotoManager *)manager
- scrollDirection:(UICollectionViewScrollDirection)scrollDirection;
- + (instancetype)photoManager:(HXPhotoManager *)manager;
- + (instancetype)photoManager:(HXPhotoManager *)manager
- scrollDirection:(UICollectionViewScrollDirection)scrollDirection;
- @property (weak, nonatomic) id<HXPhotoViewDelegate> delegate;
- @property (strong, nonatomic) HXPhotoManager *manager;
- @property (strong, nonatomic) HXCollectionView *collectionView;
- #pragma mark - < Block >
- /// 照片/视频发生改变时调用 - 选择、移动顺序、删除
- @property (copy, nonatomic) HXPhotoViewChangeCompleteBlock changeCompleteBlock;
- /// 点击了添加按钮的cell
- @property (copy, nonatomic) HXPhotoViewDidAddCellBlock didAddCellBlock;
- /// 当view高度改变时调用
- @property (copy, nonatomic) HXPhotoViewUpdateFrameBlock updateFrameBlock;
- /// 点击取消时调用
- @property (copy, nonatomic) HXPhotoViewDidCancelBlock didCancelBlock;
- /// 删除网络图片时调用
- @property (copy, nonatomic) HXPhotoViewDeleteNetworkPhotoBlock deleteNetworkPhotoBlock;
- /// 当前删除的模型
- @property (copy, nonatomic) HXPhotoViewCurrentDeleteModelBlock currentDeleteModelBlock;
- /// 长按手势结束时是否删除当前拖动的cell
- @property (copy, nonatomic) HXPhotoViewShouldDeleteCurrentMoveItemBlock shouldDeleteCurrentMoveItemBlock;
- /// 长按手势发生改变时调用
- @property (copy, nonatomic) HXPhotoViewLongGestureRecognizerChangeBlock longGestureRecognizerChangeBlock;
- /// 长按手势开始时调用
- @property (copy, nonatomic) HXPhotoViewLongGestureRecognizerBeganBlock longGestureRecognizerBeganBlock;
- /// 长按手势结束时调用
- @property (copy, nonatomic) HXPhotoViewLongGestureRecognizerEndedBlock longGestureRecognizerEndedBlock;
- #pragma mark - < Configuration >
- /// 自定义cell协议
- @property (weak, nonatomic) id<HXPhotoViewCellCustomProtocol> cellCustomProtocol;
- /// default is UICollectionViewScrollDirectionVertical
- /// 重新设置需要调用 refreshView 刷新界面
- @property (assign, nonatomic) UICollectionViewScrollDirection scrollDirection;
- /// 是否把相机功能放在外面 默认NO
- @property (assign, nonatomic) IBInspectable BOOL outerCamera;
- /// 每行个数 默认 3
- /// cell的宽高取决于 每行个数 与 HXPhotoView 的宽度 和 item间距
- /// cell.width = (view.width - (lineCount - 1) * spacing - contentInset.left - contentInset.right) / lineCount
- /// 横向布局时 cell.width -= 10
- @property (assign, nonatomic) NSInteger lineCount;
- /// 每个item间距 默认 3
- @property (assign, nonatomic) CGFloat spacing;
- /// 隐藏cell上的删除按钮
- @property (assign, nonatomic) BOOL hideDeleteButton;
- /// cell是否可以长按拖动编辑
- @property (assign, nonatomic) BOOL editEnabled;
- /// 是否显示添加的cell 默认 YES
- @property (assign, nonatomic) BOOL showAddCell;
- /// 预览大图时是否显示删除按钮
- @property (assign, nonatomic) BOOL previewShowDeleteButton;
- /// 添加按钮的图片
- @property (copy, nonatomic) NSString *addImageName;
- /// 暗黑模式下添加按钮的图片
- @property (copy, nonatomic) NSString *addDarkImageName;
- /// 删除按钮图片
- @property (copy, nonatomic) NSString *deleteImageName;
- /// 预览大图时是否禁用手势返回 默认NO
- @property (assign, nonatomic) BOOL disableaInteractiveTransition;
- /// 是否拦截添加Cell的点击事件 默认NO
- @property (assign, nonatomic) BOOL interceptAddCellClick;
- /// 删除网络图片时是否显示Alert 默认NO
- @property (assign, nonatomic) BOOL showDeleteNetworkPhotoAlert;
- /// 删除cell时是否显示Alert 默认NO
- @property (assign, nonatomic) BOOL deleteCellShowAlert;
- /// 预览大图时的风格样式
- @property (assign, nonatomic) HXPhotoViewPreViewShowStyle previewStyle;
- /// 预览时是否显示底部pageControl,暗黑样式下才有效
- @property (assign, nonatomic) BOOL previewShowBottomPageControl;
- /// 底部选择视图是否自适应暗黑风格
- @property (assign, nonatomic) BOOL adaptiveDarkness;
- /// HXPhotoView最大高度,默认屏幕高度
- @property (assign, nonatomic) CGFloat maximumHeight;
- /// 跳转相册 如果需要选择相机/相册时 还是需要选择
- - (void)goPhotoViewController;
- /// 跳转相册 过滤掉选择 - 不管需不需要选择 直接前往相册
- - (void)directGoPhotoViewController;
- /// 跳转相机
- - (void)goCameraViewController;
- /// 删除某个模型
- - (void)deleteModelWithIndex:(NSInteger)index;
- /// 刷新view
- - (void)refreshView;
- /// 跳转预览大图的界面
- - (void)jumpPreviewViewControllerWithModel:(HXPhotoModel *)model;
- - (void)jumpPreviewViewControllerWithIndex:(NSInteger)index;
- /// 根据坐标获取cell
- /// @param point 传入的坐标是在HXPhotoView上的坐标,里面已经做了转换处理
- - (HXPhotoSubViewCell *)previewingContextViewWithPoint:(CGPoint)point;
- - (HXPhotoSubViewCell *)collectionViewCellWithIndex:(NSInteger)index;
- #pragma mark - < other >
- - (NSIndexPath *)currentModelIndexPath:(HXPhotoModel *)model;
- @property (strong, nonatomic) NSIndexPath *currentIndexPath; // 自定义转场动画时用到的属性
- @end
|