美文网首页
图片浏览 photobrowser XGYPhotoBrowse

图片浏览 photobrowser XGYPhotoBrowse

作者: jasondevios | 来源:发表于2019-04-19 15:06 被阅读0次

最近项目中需要使用到图片浏览器,小编跟大家一样,网上搜索一番,一遍下来之后大多不是很满意,于是就想自己写一个,就这样诞生了 XGYPhotoBrowser,对比了大部分主流的(就是在gitHub上start比较多的),使用起来非常简洁方便,不需要创建model,直接URL即可使用,代码的量非常少,普通的图片浏览器只要两行代码就可集成完成。gitHub链接:https://github.com/xuguoyong/XGYPhotoBrowser。效果图如下:

6.6m.gif

XGYPhotoBrowser 初始化方式

/**
 * 初始化方式 1
 * @param photoURLArray 图片数组 NSString 或者是 NSURL
 * @param currentIndex 当前的图片下标
 * @return 图片浏览器
 */
+ (instancetype)browserWithPhotoURLArray:(NSArray*)photoURLArray
                            currentIndex:(NSUInteger)currentIndex;


/**
 * 初始化方式 2
 * @param delegate 浏览器的代理
 * @param totalPhotoCount 图片总数量
 * @param currentIndex 当前的图片下标
 * @return 图片浏览器
 */
+ (instancetype)browserWithDelegate:(id<XGYPhotoBrowserDelegate>)delegate
                    totalPhotoCount:(NSUInteger)totalPhotoCount
                       currentIndex:(NSUInteger)currentIndex;

/**
 * 展示图片浏览器
 */
- (void)showPhotoBroswer;

/**
 * 展示图片浏览器在某个控制器
 */
- (void)showPhotoBroswerInViewController:(UIViewController *)viewController;

/**
 * 隐藏图片浏览器
 */
- (void)dismissPhotoBroswerWithAnimation:(BOOL)animation;

XGYPhotoBrowser 图片动画模式和loading的动画模式

/**
 界面消失的动画
 - XGYPhotoBrowserDismissAnimationScale: 缩放动画(类似微信)- 默认
 - XGYPhotoBrowserDismissAnimationRotation: 环形动画
 - XGYPhotoBrowserDismissAnimationSlide: 垂直下拉动画
 - XGYPhotoBrowserDismissAnimationNone: 没有动画(不允许拖拽)
 */
typedef NS_ENUM(NSUInteger, XGYPhotoBrowserDismissAnimation) {
    XGYPhotoBrowserDismissAnimationScale,
    XGYPhotoBrowserDismissAnimationRotation,
    XGYPhotoBrowserDismissAnimationSlide,
    XGYPhotoBrowserDismissAnimationNone
};


/**
 加载图片的loding的样式
 
 - XGYPhotoBrowserLoadingTypeIndeterminate: 不显示下载进度的loading
 - XGYPhotoBrowserLoadingTypeDeterminate: 显示下载进度的loading
 */
typedef NS_ENUM(NSUInteger, XGYPhotoBrowserLoadingType) {
    XGYPhotoBrowserLoadingTypeIndeterminate,
    XGYPhotoBrowserLoadingTypeDeterminate
};

XGYPhotoBrowser 代理方法


/**
 * 返回临时占位图
 * @param browser 当前浏览器
 * @param index   当前的下标
 * @return 返回图片
 */
- (UIImage *)photoBrowser:(XGYPhotoBrowser *)browser replaceImageAtIndex:(NSUInteger)index imageURL:(NSURL *)imageURL;

/**
 * 返回大图的URL
 * @param browser 图片浏览器
 * @param index   当前的下标
 * @return 图片URL
 */
- (NSURL *)photoBrowser:(XGYPhotoBrowser *)browser imageURLAtIndex:(NSUInteger)index;

/**
 * 对应下标的缩略图所在的View
 * @param browser 当前的视图浏览器
 * @param index   当前的下标
 * @return 返回缩略图所在的View
 */
- (UIView *)photoBrowser:(XGYPhotoBrowser *)browser thumbnailFrameAtIndex:(NSUInteger)index;



/**
 * 当前滑动到某一张图片
 * @param browser 图片浏览器
 * @param index   当前的下标
 */
- (void)photoBrowser:(XGYPhotoBrowser *)browser didScrollPhotoToIndex:(NSUInteger)index;

/**
 * 图片浏览器的下标发生改变的时候会调用的回调
 * @param browser    当前的浏览器
 * @param pageIndex  当前的下标
 */
- (void)photoBrowser:(XGYPhotoBrowser *)browser didChangePageIndex:(NSInteger)pageIndex pageIndexView:(UIView *)pageIndexView;


#pragma mark - customUI

/**
 * 返回显示图片页码的 View 默认是label 可以修改文字的颜色和frame
 * @param browser 当前的浏览器
 * @return 图片页码的View
 */
- (UIView *)photoBrowser:(XGYPhotoBrowser *)browser pageIndexView:(UILabel *)pageIndexView;



#pragma mark - EventClick

/**
 * 是否允许点击图片
 * @param browser 图片浏览器
 * @param index   当前的下标
 */
- (BOOL)photoBrowser:(XGYPhotoBrowser *)browser shouldTapPhotoAtIndex:(NSUInteger)index;

/**
 * 点击图片
 * @param browser 图片浏览器
 * @param index   当前的下标
 */
- (void)photoBrowser:(XGYPhotoBrowser *)browser didTapPhotoAtIndex:(NSUInteger)index;

/**
 * 是否允许长按图片
 * @param browser 图片浏览器
 * @param index   当前的下标
 */
- (BOOL)photoBrowser:(XGYPhotoBrowser *)browser shouldLongPressPhotoAtIndex:(NSUInteger)index;

/**
 * 长按图片
 * @param browser 图片浏览器
 * @param index    当前的下标
 */
- (void)photoBrowser:(XGYPhotoBrowser *)browser didLongPressPhotoAtIndex:(NSUInteger)index;

XGYPhotoBrowser 使用方法

普通浏览器,只要两行代码即可 imageListArray为图片数组,内容为图片URL或者是图片的NSString字符串地址

    XGYPhotoBrowser *browser = [XGYPhotoBrowser browserWithPhotoURLArray:imageListArray currentIndex:currentIndex];
    [browser showPhotoBroswer];

带动画的视图浏览器 初始化方式修改为代理的方式,只要实现3个代理方法即可实现微信的图片浏览效果,初始化方式如下

 XGYPhotoBrowser *browser = [XGYPhotoBrowser browserWithDelegate:self totalPhotoCount: imageListArray.count currentIndex: currentIndex];
  [browser showPhotoBroswer];

代理方法


#pragma mark - XGYPhotoBrowserDelegate
/**
 * 返回临时占位图
 * @param browser 当前浏览器
 * @param index   当前的下标
 * @return 返回图片
 */
- (UIImage *)photoBrowser:(XGYPhotoBrowser *)browser replaceImageAtIndex:(NSUInteger)index imageURL:(NSURL *)imageURL
{
    YYImageCache *cache = [YYWebImageManager sharedManager].cache;
    NSString *key =  [[YYWebImageManager sharedManager] cacheKeyForURL:imageURL];
    return [cache getImageForKey:key];
}

/**
 * 返回大图的URL
 * @param browser 图片浏览器
 * @param index   当前的下标
 * @return 图片URL
 */
- (NSURL *)photoBrowser:(XGYPhotoBrowser *)browser imageURLAtIndex:(NSUInteger)index
{
    NSString *url = [self.listArray objectAtIndex:index];
    return [NSURL URLWithString:url];
}

/**
 * 对应下标的缩略图所在的View
 * @param browser 当前的视图浏览器
 * @param index   当前的下标
 * @return 返回缩略图所在的View
 */
- (UIView *)photoBrowser:(XGYPhotoBrowser *)browser thumbnailFrameAtIndex:(NSUInteger)index
{
    //注 :微信展开图片和收起图片都是回到同一个位置,要实现该种效果 只要传一个相同的 view 即可
    // XGYPhotoCell *listCell = (XGYPhotoCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.clickIndex inSection:0]];
    
    
    XGYPhotoCell *listCell = (XGYPhotoCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]];
    return listCell;
}

完整的代码实现请关注gitHub :https://github.com/xuguoyong/XGYPhotoBrowser 。由于时间仓促,会继续支持视频浏览,持续更新中...

相关文章

网友评论

      本文标题:图片浏览 photobrowser XGYPhotoBrowse

      本文链接:https://www.haomeiwen.com/subject/qxnvvqtx.html