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

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

(0)

相关推荐

  • iOS开发之路--微博骨架搭建

    最终效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // 这个就是主控制器,分为两块,下面是Dock栏,上面是显示不同的子控制器的view,子控制器最好用导航控制器包装一下,这样子控制器就自带了导航条,左按钮,标题,右按钮 /

  • iOS开发之路--微博新特性页面

    BeyondAppDelegate.m // // BeyondAppDelegate.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondAppDelegate.h" #import "BeyondViewController.h" #import "NewFe

  • iOS 仿微博客户端红包加载界面 XLDotLoading效果

    一.显示效果 二.原理简介 1.思路 要实现这个效果需要先知道这两个硬币是怎样运动的,然后通过放大.缩小的效果实现的这种有距离感的效果.思路如下: 一.这两个硬币是在一定范围内做相对运动的,可以先使一个硬币在一个固定范围内做左右的往复运动,另一个硬币和它做"相对运动"即可. 二.让硬币从左至右移动时先变小再回复正常:从右至左移动时先变大再回复正常:这样就实现了这用有距离感的"相对运动". 2.代码 第一步 要实现一个硬币在一定范围内实现左右往复运动,需要先固定一个范

  • iOS开发之路--微博OAuth授权_取得用户授权的accessToken

    最终效果图: OauthViewController.m // // OauthViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-5. // Copyright (c) 2014年 com.beyond. All rights reserved. // 授权控制器,仅运行一次,取得了当前用户的access_token和uid之后,存档,切换窗口的主控制器 #import "OauthViewController.h&quo

  • iOS仿微博客户端一条微博的展示效果

    前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看看从前走过的路,挖过的坑.这是一条微博的展示,不是整个项目. 废话不多说,先上效果图: 拆分控件 在开始动手写代码之前,我们得先确定怎么去实现这样子的布局,也就是分析需要用到哪些控件. 观察微博客户端,整体是可滑动的,而且界面展示比较规律的,所以应该是使用UITableView实现的.那么一条微博应

  • iOS开发之路--微博“更多”页面

    最终效果图: MoreViewController.m // // MoreViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-4. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "MoreViewController.h" @interface MoreViewController () { // more.plist根是字典

  • iOS中使用UItableviewcell实现团购和微博界面的示例

    使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文件控件tag值操作 数据模型部分: YYtg.h文件 复制代码 代码如下: // //  YYtg.h //  01-团购数据显示(没有配套的类) // //  Created by apple on 14-5-29. //  Copyright (c) 2014年 itcase. All rights reserv

  • iOS新浪微博、腾讯微博分享功能实例

    一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权).点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显示微博内容,而后发布微博.设置界面中的绑定,就是相关的应用授权. 呵呵,其实也蛮简单滴. 首先分别从新浪微博开放平台(http://open.weibo.com/).腾讯微博开放平台(http://dev.t.qq.com/)中注册应用,获取到Appkey,AppSecret和AppURL(其中 AppURL是要自己填写的). 然后分别下载相关的SDK. h

  • 完整的iOS新浪微博分享功能开发

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 做新浪分享 需先去http://open.weibo.com/apps注册开发者app 很简单! 第1步 第2步 3 设置你的应用的信息 找到自己的appkey 还需要设置自己的kAppRedirectURL测试可以随便写个! 开发部分在下面ios新浪微博分享(2)这部分: 开发需要下载官方的sdkhttp://open.weibo.com/wiki/SDK#iOS_SDK 本人下载的版本 新建一个viewco

  • iOS仿微博图片浏览器

    KNPhotoBrower 高仿微博图片浏览器 PhotoBrower.gif 一.功能描述及要点 1.加载网络九宫格图片,collectionView,scrollView 2.SDWebImage下载图片,KNProgressHUD显示加载进度 3.高仿微博,显示动画,KNToast提示 二.方法调用 1.创建KNPhotoBrower,并传入相应的参数 // 每一个图片控件对象, 对一一对应 KNPhotoItems ,再将多个KNPhotoItems 对象放入数组 KNPhotoItem

  • iOS仿微信图片分享界面实现代码

    分享功能目前几乎已成为很多app的标配了,其中微信,微博等app的图片分享界面设计的很棒,不仅能够展示缩略图,还可以预览删除.最近我在做一款社交分享app,其中就要实现图文分享功能,于是试着自行实现仿微信分享风格的功能. 核心思想: 主要是使用UICollectionView来动态加载分享图片内容,配合预览页面,实现动态添加和预览删除图片效果. 实现效果: 核心代码如下: 分享界面: // // PostTableViewController.h // NineShare // // Creat

  • iOS仿微博导航栏动画(CoreGraphics)的实现方法

    前言 昨天刚做完项目的新版本.除了尝试一些新的架构之外.功能方面并没什么特别的地方. 但是顺手搞了一些还算好玩的东西.其一就是这个导航栏的动画. 感觉还算简单易懂.分享一下(其实更多是最近攒了好多封面.不贴出来憋得人难受). 导航栏动画.gif 思路 先介绍CA的两个方法: 基于原始状态的位移 CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty) CG_AVAILABLE_STAR

  • avalon js实现仿微博拖动图片排序

    下文针对仿微博图片随意拖动,调整图片的顺序,讲解的很详细,文章肯定还有欠缺的地方,欢迎提出批评改正.废话不多说了,看具体内容吧. 点击此处进入源码下载 什么是拖动图片排序? 就像微博这种,上传后允许用户通过拖动图片,调整几张图片的顺序. 可以看到微博在这里把每张图片固定了尺寸,稍微严谨点的话,就需要像上一篇文章那样,外面是响应式的等高等宽的若干div容器,里面则是等比例缩放的响应式图片. 下面说下要求. 1.当然首先图片要可以拖动. 2.图片移出其原本的位置,拖动到目标位置并且未松开鼠标完成拖动

  • iOS开发中使用UIScrollView实现无限循环的图片浏览器

    一.概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通.今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 二.UIView 在熟悉UIScrollView之前很有必要说一下UIView的内容.

  • iOS开发教程之自定制图片浏览器

    前言 图片浏览器大家应该都用过,这方面的第三方也有很多,不过有时候第三方会跟我们的需求有一些出入,这就需要我们要么对第三方进行修改要么自己重新定制.我是比较喜欢自己重新定制的,在这给大家简单介绍一下我定制的图片浏览器,算是给大家提供一个思路,可以在此基础上进行修改完善. 实现原理 通过弹出UIViewController的形式来展示图片,使用UICollectionView并添加手势来实现图片浏览时图片的间隔. 首先创建一个继承于UIViewController的控制器,来作为图片浏览器的控制器

  • JavaScript仿百度图片浏览效果

    本文实例为大家分享了js图片浏览效果的具体代码,供大家参考,具体内容如下 在线地址:http://www.hui12.com/nbin/demo/imgskim/index.html https://nbin2008.github.io/demo/imgskim/index.html 效果图: index <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>仿

  • 一个仿微博登陆邮箱提示框js开发案例

    最近在好好的研究JS,通过一个仿邮箱登录提示框的案例加深下对面向对象的理解!啥都别说,先上图: 功能:实现正则匹配显示相符的内容.键盘事件.鼠标事件 简单布局: <div id="login"> <h2>仿微博登录</h2> <div class="detail"> <input type="text" placeholder='邮箱/会员账号/手机号' autocomplete='off'

随机推荐