工具分享——UIImageView图片一键弹屏显示SGImageBrowser

  推荐一个很方便的弹出图片的工具SGImageBrowser,可以使用Pod快速集成。该工具只需一个函数调用就可以一键弹出照片,弹出照片过程支持懒加载高清照片,支持加载原图,支持下载原图,弹出过程仿微信弹出照片的效果,可以弹出一组朋友圈照片,也可以弹出一组任何照片。

  内部同时提供一套UIAlertController+SG的工具类,该工具类,可以一行代码实现Alert的响应,可以一行代码弹出ActionSheet,使用非常方便。可以一个函数一行实现的方式就是使用Block回调,回调的buttonIndex==0时代表点击的取消的按钮,其他多个按钮buttonIndex顺序响应点击的按钮,使用非常方便, 文章末尾提供API。


示例展示 Demo

Gif动态加载出错了,点击查看源代码

SGImageBrowser 使用方式 Usage:


    1. 简单的ImageView全屏浏览图片
[SGImageBrowser show:self.imageView];        
    1. 其他任意容器中的ImageView,下例为UICollectionCell的ImageView
__weak typeof(self) weakSelf = self;
/**
 * show: 点击了九宫格中的第i个图片,动画弹出第i个图片
 * totalCount: 照片总数
 * placeHolderImageOrName: 提供placeHolder可以为本地图片名称,或者UIImage
 * dataSource: 当滚动到第i个位置是,提供第i个位置的图片
 */
[SGImageBrowser show:indexPath.row totalCount:self.imgNames.count placeHolderImageOrName:nil dataSource:^(NSInteger index, SGImageBrowserDataSourceBlock  _Nonnull dataSourceBlock) {
    // 当滚动到某个位置时,提供那个位置的图片
    CollectionViewCell *cell = (CollectionViewCell *)[collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
    //  懒加载midlleUrl中等大小的图片,点击查看原图按钮加载originUrl
    NSURL *middleUrl = [weakSelf imageUrlWithType:URL_Middle atIndex:index];
    NSURL *originUrl = [weakSelf imageUrlWithType:URL_Origin atIndex:index];
    /**
     * 第1个参数imageView: 为了退出浏览时,缩回动画,缩回到这个imageView的位置
     * 第2个参数: 提供第i个位置图片或者名称用于显示
     * 第3个参数: 提供第i个位置图片url 用于加载图片
     * 第4个参数: 提供第i个位置图片原图url,第2,3,4个参数必选一个才能显示图片
     * 第5个参数: 提供图片大小用于下载原图的按钮显示 @"1024KB"
     */
    dataSourceBlock(cell.imageView,nil,middleUrl,originUrl,@"1024KB");
}];      
    1. 使用一组图片或者一组图片的url,浏览一组图片
// dataSourceBlock的5个参数说明: 数据源至少有一个提供图片的不为nil即可
// dataSourceBlock(UIImageView, 图片或者图片名称, 自动加载的url(NSString or NSURL), 原图或者高清图url, 图片大小字符串)
__weak typeof(self) weakSelf = self;
[SGImageBrowser show:0 totalCount:self.imgNames.count placeHolderImageOrName:nil dataSource:^(NSInteger index, SGImageBrowserDataSourceBlock  _Nonnull dataSourceBlock) {
    dataSourceBlock(nil, weakSelf.imgNames[index],nil,nil,nil);
}];  

安装

CocoaPods

  1. 在 Podfile 中添加 pod 'SGImageBrowser'
  2. 执行 pod installpod update
  3. 导入 #import
  4. 查看源代码

API

任意的imageView可以简单的快速全屏浏览。

/**
 数据源回调block.

 @param targetImageView 第index个 imageView _Nullable
 @param targetImageOrName 第index个 image 可以是本地图片的名称
 @param targetAutoLoadImageUrl  第index个 自动下载更清晰的图片url String or URL nullable
 @param targetOriginImageUrl 第index个 高清图片url可用于显示原图的按钮,当autoLoadUrl不存在时使用这个url String or URL nullable
 @param targetOriginImageSize 第index个 高清图片大小 NSString,设置好NSString直接填充
 */
typedef void (^SGImageBrowserDataSourceBlock)(UIImageView * _Nullable targetImageView, id _Nullable targetImageOrName, id _Nullable targetAutoLoadImageUrl, id _Nullable targetOriginImageUrl, NSString * _Nullable targetOriginImageSize);


/**
 单例
 
 @return SGImageBrowser
 */
+ (instancetype _Nonnull )shared;

/**
 * 全屏浏览一张图片
 
 * @param imageView 展示的imageView
 * @param autoLoadImageUrl 自动下载更清晰的图片url String or URL nullable
 * @param originImageUrl 原图url
 * @param originImageSize 原图图片大小 NSString,设置好NSString直接填充
 * @return SGImageBrowser
 */
+ (instancetype _Nonnull)show:(UIImageView * _Nullable)imageView autoLoadImageUrl:(id _Nullable)autoLoadImageUrl originImageUrl:(id _Nullable)originImageUrl originImageSize:(NSString* _Nullable)originImageSize;
+ (instancetype _Nonnull )show:(UIImageView *_Nullable)imageView autoLoadImageUrl:(id _Nullable )autoLoadImageUrl originImageUrl:(id _Nullable )originImageUrl;
+ (instancetype _Nonnull )show:(UIImageView *_Nullable)imageView autoLoadImageUrl:(id _Nullable )autoLoadImageUrl;
+ (instancetype _Nonnull )show:(UIImageView *_Nullable)imageView;

/**
 * 全屏浏览一组图片
 
 * @param startIndex 当前组的第startIndex开始展示
 * @param totalCount 展示的总数
 * @param placeHolderImageOrName 当滑动到没有预览图时可以展示 placeHolderImageOrName nullable
 * @param dataSourceBlock (UIImageView * _Nonnull targetImageView, id _Nullable targetImageOrName, id _Nullable targetAutoLoadImageUrl, id _Nullable targetOriginImageUrl) 异步获取第i个展示的数据源
 * @return SGImageBrowser
 */
+ (instancetype _Nonnull )show:(NSInteger)startIndex totalCount:(NSInteger)totalCount placeHolderImageOrName:(id _Nullable )placeHolderImageOrName dataSource:(SGImageBrowserDataSourceGetter _Nonnull )dataSourceBlock;
+ (instancetype _Nonnull )show:(NSInteger)startIndex totalCount:(NSInteger)totalCount dataSource:(SGImageBrowserDataSourceGetter _Nonnull )dataSourceBlock;
            

提供UIAlertController+SG的API,一个函数调用快速进行Alert和ActionSheet弹屏

/**
 *  弹出Alert 单按钮 参数:message  默认title ”提示“ 默认按钮 ”知道了“
 *
 *  @param message         内容
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )alert:(NSString *_Nonnull)message;

/**
 *  弹出Alert 单按钮 参数:title、message、confirmBtn
 *
 *  @param title             Title
 *  @param message           内容
 *  @param confirmBtn        确认按钮
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )alert:(NSString *_Nullable)title
                        message:(NSString *_Nonnull)message
                     confirmBtn:(NSString *_Nonnull)confirmBtn ;

/**
 *  弹出Alert 双按钮 参数:message、actionBlock  默认title ”提示“ ,按钮 “取消”、"确定"
 *
 *  @param message          内容
 *  @param actionBlock      选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )alert:(NSString *_Nonnull)message
                       onAction:(UIAlertControllerActionBlock _Nullable )actionBlock;

/**
 *  弹出Alert 自定义 参数:title、message、cancelTitle、otherBtns、actionBlock
 *
 *  @param title             Title
 *  @param message           内容
 *  @param cancelTitle       取消
 *  @param otherBtns         其他按钮
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )alert:(NSString *_Nullable)title
                        message:(NSString *_Nonnull)message
                      cancelBtn:(NSString *_Nullable)cancelTitle
                      otherBtns:(id _Nonnull)otherBtns
                       onAction:(UIAlertControllerActionBlock _Nullable )actionBlock ;

#pragma mark - ActionSheet

/**
 *  弹出ActionSheet 参数:actions、actionBlock
 *
 *  @param actions            其他按钮
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )sheet:(id _Nonnull)actions
                       onAction:(UIAlertControllerActionBlock _Nonnull )actionBlock ;
/**
 *  弹出ActionSheet 参数:title、actions、actionBlock
 *
 *  @param title             Title
 *  @param actions           其他按钮
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )sheet:(NSString *_Nullable)title
                        actions:(id _Nonnull)actions
                       onAction:(UIAlertControllerActionBlock _Nonnull)actionBlock ;

/**
 *  弹出ActionSheet Sheet自定义 参数:title、message、cancelTitle、actions、actionBlock
 *
 *  @param title             Title
 *  @param message           内容
 *  @param cancelTitle       取消
 *  @param actions           其他按钮 NSArray *  or NSString *
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )sheet:(NSString *_Nullable)title
                        message:(NSString *_Nullable)message
                      cancelBtn:(NSString *_Nullable)cancelTitle
                        actions:(id _Nullable )actions
                       onAction:(UIAlertControllerActionBlock _Nullable )actionBlock;
/**
 *  弹出AlertOrSheet 类型自定义 参数:title、message、cancelTitle、otherBtns、type、actionBlock
 *
 *  @param title             Title
 *  @param message           内容
 *  @param cancelTitle       取消
 *  @param otherBtns         其他按钮 NSArray *   or NSString *
 *  @param type              UIAlertControllerStyle
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )showAlertOrSheet:(NSString *_Nullable)title
                                   message:(NSString *_Nullable)message
                                 cancelBtn:(NSString *_Nullable)cancelTitle
                                 otherBtns:(id _Nullable)otherBtns
                                      type:(UIAlertControllerStyle)type
                                  onAction:(UIAlertControllerActionBlock _Nullable)actionBlock;


/**
 *  AlertOrSheet 全自定义, 不自动弹出,自己定义完后自己调用show
 *
 *  @param title             Title
 *  @param message           内容
 *  @param cancelTitle       取消
 *  @param otherBtns         其他按钮 NSArray *   or NSString *
 *  @param type              UIAlertControllerStyle
 *  @param actionBlock       选择结果回调
 *
 *  @return UIAlertController
 */
+ (instancetype _Nonnull )alertOrSheet:(NSString *_Nullable)title
                               message:(NSString *_Nullable)message
                             cancelBtn:(NSString *_Nullable)cancelTitle
                             otherBtns:(id _Nullable)otherBtns
                                  type:(UIAlertControllerStyle)type
                              onAction:(UIAlertControllerActionBlock _Nullable)actionBlock;
/**
 *  AlertOrSheet自定义, 不自动弹出,自己定义完后自己调用show
 */
- (void)show ;

你可能感兴趣的:(工具分享——UIImageView图片一键弹屏显示SGImageBrowser)