服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS仿微博图片浏览器

iOS仿微博图片浏览器

2021-02-21 15:03LuKane IOS

这篇文章主要为大家详细介绍了iOS仿微博图片浏览器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

knphotobrower
高仿微博图片浏览器

iOS仿微博图片浏览器

photobrower.gif

一.功能描述及要点
1.加载网络九宫格图片,collectionview,scrollview
2.sdwebimage下载图片,knprogresshud显示加载进度
3.高仿微博,显示动画,kntoast提示

二.方法调用

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

?
1
2
3
4
5
6
7
8
9
10
// 每一个图片控件对象, 对一一对应 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

?
1
2
3
4
5
6
/* photobrower 即将消失 */
- (void)photobrowerwilldismiss;
/* photobrower 右上角按钮的点击 */
- (void)photobrowerrightoperationactionwithindex:(nsinteger)index;
/* photobrower 保存图片是否成功 */
- (void)photobrowerwritetosavedphotosalbumstatus:(bool)success;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * 是否需要右上角的按钮. 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 方法中增减

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#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

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

原文链接:http://www.jianshu.com/p/6065684b3ad2

延伸 · 阅读

精彩推荐
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22