iOS仿微博图片浏览器

 更新时间:2016年11月29日 09:57:22   作者:LuKane  
这篇文章主要为大家详细介绍了iOS仿微博图片浏览器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

KNPhotoBrower
高仿微博图片浏览器


PhotoBrower.gif

一.功能描述及要点
1.加载网络九宫格图片,collectionView,scrollView
2.SDWebImage下载图片,KNProgressHUD显示加载进度
3.高仿微博,显示动画,KNToast提示

二.方法调用

1.创建KNPhotoBrower,并传入相应的参数

// 每一个图片控件对象, 对一一对应 KNPhotoItems ,再将多个KNPhotoItems 对象放入数组
KNPhotoItems *items = [[KNPhotoItems alloc] init];
items.url = [urlArr[i] stringByReplacingOccurrencesOfString:@"thumbnail" withString:@"bmiddle"];
items.sourceView = imageView;

KNPhotoBrower *photoBrower = [[KNPhotoBrower alloc] init];
photoBrower.itemsArr = [_itemsArray copy];// KNPhotoItems对象的数组
photoBrower.currentIndex = tap.view.tag;// 当前点击的哪个图片
photoBrower.actionSheetArr = [self.actionSheetArray mutableCopy];//设置 ActionSheet的选项
[photoBrower present];// 显示

2.提供代理方法 --> KNPhotoBrowerDelegate

/* PhotoBrower 即将消失 */
- (void)photoBrowerWillDismiss;
/* PhotoBrower 右上角按钮的点击 */
- (void)photoBrowerRightOperationActionWithIndex:(NSInteger)index;
/* PhotoBrower 保存图片是否成功 */
- (void)photoBrowerWriteToSavedPhotosAlbumStatus:(BOOL)success;

3.提供 消失方法
[_photoBrower dismiss];
4.设置 参数

/**
 * 是否需要右上角的按钮. Default is YES;
 */
@property (nonatomic, assign) BOOL isNeedRightTopBtn;
/**
 * 是否需要 顶部 1 / 9 控件 ,Default is YES
 */
@property (nonatomic, assign) BOOL isNeedPageNumView;
/**
 * 是否需要 底部 UIPageControl, Default is NO
 */
@property (nonatomic, assign) BOOL isNeedPageControl;
/**
 * 存放 ActionSheet 弹出框的内容 :NSString类型
 */
@property (nonatomic, strong) NSMutableArray *actionSheetArr;

5.关于弹出框的内容,可在KNPhotoBrower.m 的operationBtnIBAction 方法中增减

#pragma mark - 右上角 按钮的点击
- (void)operationBtnIBAction{
 __weak typeof(self) weakSelf = self;

 if(_actionSheetArr.count != 0){ // 如果是自定义的 选项

  KNActionSheet *actionSheet = [[KNActionSheet alloc] initWithCancelBtnTitle:nil destructiveButtonTitle:nil otherBtnTitlesArr:[_actionSheetArr copy] actionBlock:^(NSInteger buttonIndex) {

   // 让代理知道 是哪个按钮被点击了
   if([weakSelf.delegate respondsToSelector:@selector(photoBrowerRightOperationActionWithIndex:)]){
    [weakSelf.delegate photoBrowerRightOperationActionWithIndex:buttonIndex];
   }

#warning 如果传入的 ActionSheetArr 有下载图片这一选项. 则在这里调用和下面一样的方法 switch.....,如果没有下载图片,则通过代理方法去实现... 目前不支持删除功能

  }];
  [actionSheet show];
 }else{
  KNActionSheet *actionSheet = [[KNActionSheet alloc] initWithCancelBtnTitle:nil destructiveButtonTitle:nil otherBtnTitlesArr:@[@"保存图片",@"转发微博",@"赞"] actionBlock:^(NSInteger buttonIndex) {

   // 让代理知道 是哪个按钮被点击了
   if([weakSelf.delegate respondsToSelector:@selector(photoBrowerRightOperationActionWithIndex:)]){
    [weakSelf.delegate photoBrowerRightOperationActionWithIndex:buttonIndex];
   }

   switch (buttonIndex) {
    case 0:{
     SDWebImageManager *mgr = [SDWebImageManager sharedManager];
     KNPhotoItems *items = _itemsArr[_currentIndex];
     if(![mgr diskImageExistsForURL:[NSURL URLWithString:items.url]]){
      [[KNToast shareToast] initWithText:@"图片需要下载完成"];
      return ;
     }else{
      UIImage *image = [[mgr imageCache] imageFromDiskCacheForKey:items.url];
      dispatch_async(dispatch_get_main_queue(), ^{
       UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
      });
     }
    }
    default:
     break;
   }
  }];
  [actionSheet show];
 }
}

补充
1.目前适合 九宫格样式,collectionView,scrollView
2.如果有bug, 请在Github上通过 '邮箱' 或者 直接issue ,我会尽快修改
github地址:  https://github.com/LuKane/KNPhotoBrower

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS Webview自适应实际内容高度的4种方法详解

    iOS Webview自适应实际内容高度的4种方法详解

    这篇文章主要介绍了iOS Webview自适应实际内容高度的4种方法详解,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • IOS ObjectiveC中的赋值与对象拷贝

    IOS ObjectiveC中的赋值与对象拷贝

    这篇文章主要介绍了IOS ObjectiveC中的赋值与对象拷贝的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • Objective-C中关于实例所占内存的大小详解

    Objective-C中关于实例所占内存的大小详解

    这篇文章主要给大家介绍了关于Objective-C中实例所占内存的大小的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • NSString属性何时用strong何时用copy?

    NSString属性何时用strong何时用copy?

    相信各位iOS开发者们都考虑过这个问题,平时写NSString的属性时都用copy,那strong要何时用呢?下面这篇文章就来看一下什么时候应该用copy,什么时候应该用strong。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • iOS实现简易钟表

    iOS实现简易钟表

    这篇文章主要为大家详细介绍了iOS实现简易钟表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 详解iOS11关于导航栏问题

    详解iOS11关于导航栏问题

    本篇文章主要介绍了详解iOS11关于导航栏问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • iOS创建与使用静态库

    iOS创建与使用静态库

    这篇文章主要为大家详细介绍了iOS创建与使用静态库的相关资料,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • iOS实现APP程序内部打开APP的AppStore页面

    iOS实现APP程序内部打开APP的AppStore页面

    这篇文章主要给大家介绍了关于iOS实现APP程序内部打开APP的AppStore页面的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
    2017-06-06
  • Objective-C的缓存框架EGOCache在iOS App开发中的使用

    Objective-C的缓存框架EGOCache在iOS App开发中的使用

    这篇文章主要介绍了Objective-C的缓存框架EGOCache在iOS App开发中的使用,重点讲解了EGOCache对缓存过期时间的检测及处理,需要的朋友可以参考下
    2016-05-05
  • iOS中如何使用iconfont图标实例详解

    iOS中如何使用iconfont图标实例详解

    iconfont大家在开发中应该会经常用到,下面这篇文章主要给大家介绍了在iOS中如何使用iconfont图标实例的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07

最新评论