专栏首页大宇笔记iOS 仿微信相册选择照片imagePicker(Swift) 序号 预览缩略图

iOS 仿微信相册选择照片imagePicker(Swift) 序号 预览缩略图

序:微信最新版,选择照片控件细节有所改变,一般有轮子我是不会从新造的 。产品要求一模一样,无奈重新写。调查了一下,GitHub大部分仿微信imagePicker还是基于TZImagePicker,swift出了那么长时间了。决定写一个swift版,因在项目中,时间有限,所以在GitHub找了一个非常好的库进行改写。

##演示

##功能支持

高仿微信细节

  • 相册序号选择: 微信样式多选照片
  • 预览序号选择: 预览时可以序号选择
  • 预览缩略图和大图联动: 联动样式仿微信
  • 网络图片浏览: 有时需要处理服务器返回网络图片
  • 快速布局UI: 只需集成 ZYImagePickerLayoutView 可自动将照片布局

结构

不依赖任何第三方库。

ZYImagePickerAndBrower 是一个模仿微信相册多选照片的一个控件。注意了微信相册的一些细节,比如序号,最大选择之后照片变灰,浏览缩略图等等。

ZYImagePickerLayoutView 是相册选择之后的布局view库,单独拿出来做一个UI库,可选集成。

支持

  • 支持iOS8+
  • Swift4.1
  • Cocospods

##安装

手动Demo

里面有这两个库,拖到项目即可,具体看demo。

Cocospods Demo:

pod 'ZYImagePickerAndBrower', '~> 1.0.0' pod 'ZYImagePickerLayoutView', '~> 0.1.7' 可选

使用

设置主题颜色

ZYPhotoAlbumSkinColor = UIColor.orange

选照片

 let photoAlbumVC = ZYPhotoNavigationViewController(photoAlbumDelegate: self, photoAlbumType: .selectPhoto)    //初始化需要设置代理对象
        photoAlbumVC.maxSelectCount = 9   //最大可选择张数
        self.navigationController?.present(photoAlbumVC, animated: true, completion: nil)

ZYPhotoAlbumProtocol回调

 func photoAlbum(selectPhotos: [ZYPhotoModel]) {
        //选择的照片之后去layoutView显示
        let imageArray = selectPhotos.map { (model) -> UIImage in
            return model.thumbnailImage!
        }
        imagePickerView.dataSource = imageArray
        imagePickerView.numberOfLine = 4
        imagePickerView.reloadView()
        imagePickerView.addCallBack = { () in
            self.goPickerController()
        }
 }

预览图片: ZYPhotoModel支持url,image预览

 let photoPreviewVC = ZYPhotoPreviewDeleteViewController()
        photoPreviewVC.previewPhotoArray = self.selectIamgeArr        //传入预览源,为WQPhotoModel数组,支持缩略图,原图和网络图
        photoPreviewVC.currentIndex = index                    //当前展示第几张
        photoPreviewVC.isAllowDelete = false
        self.navigationController?.pushViewController(photoPreviewVC, animated: true)

后记

参考基础库: https://github.com/wCodeQ/WQPhotoAlbum

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 说说微信支付那点事

    从刚开始到现在做得有支付的项目也有几个了,以前都没有微信支付的接入需求,接入支付宝和银联就好了做起来比较简单,尤其是支付宝对于开发者提供的技术支持相当的给力。给...

    ZY_FlyWay
  • Python3 基础学习之数值简单运算

    zhangyudeiMac:~ zhangyu$ python3 /Users/zhangyu/Desktop/数据计算.py 

    ZY_FlyWay
  • iOS 颜色照片

    版权声明:转载请标明出处 https://blog.csdn.net/ZY_FlyWa...

    ZY_FlyWay
  • 管理|管理就是管理别人,就是我指挥,你来干?

    黄小怪
  • 1. 死磕 k8s系列之核心概念介绍

    类似于轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,但是所有的容器是相互隔离的,互不可见的...

    彤哥
  • 【作者投稿】奇葩webshell技巧

    前段时间看XDCTF的一道web题,发现了一种很奇特的构造webshell的方法。

    信安之路
  • 目标检测第5步-使用keras版YOLOv3训练

    1.本文学习Patrick_Lxc的博客《Keras/Tensorflow+python+yolo3训练自己的数据集》并优化其中代码。 原博客链接:https...

    潇洒坤
  • 【译】20个 Laravel Eloquent 小技巧(上)

    Eloquent ORM 在其表面简单易用的机制背后,还有很多半隐藏的功能或者少有人知的方法来实现一些很有用的需求。 在本文中,我将向您展示一些技巧。

    彪彪
  • Excel实战技巧81: 巧妙显示工作表数据信息

    我们可以将工作表中的一些信息隐藏,供需要时或者有些用户想看时选择查看,如下图1所示。

    fanjy
  • Python面向对象基础

    NOTE: 重要强调:     Python的作用域和命名空间 (1)命名空间 是从命名到对象的映射     ①内置命名空间     ②全局命名空间:模块   ...

    py3study

扫码关注云+社区

领取腾讯云代金券