FFBrowserImageViewController

自定义的图片浏览器:支持图片双击放大,单击取消,拖动取消。

重点:

1:在iOS11之后再布局是要将UIScrollViewContentInsetAdjustmentBehavior设置为Never,否则scrollView会自动计算和适应顶部和底部的内边距并且在scrollView不可滚动是时,也会设置内边距.设置为Never之后不会在设置内边距。

2:由于图片上同时存在单击手势,双击手势。故需要使用 - (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer 这个方法,
   [singleTap requireGestureRecognizerToFail:doubleTap], 即当手机手势响应失败后在响应单击手势。

3:图片淡入淡出的动画效果,获取在前一级页面上的位置,并计算在当前页面上的位置,通过位置变化,以及颜色变化,实现动画效果。调用

CGRect startRect = [self.view convertRect:needImageView.frame fromView:needImageView.superview];

/// 将rect的位置信息,转化成view上的位置信息 
- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
/// 将rect在view上的位置信息,转化成调用他的View上的位置信息
- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

4:  collectionView和cell上的ScrollView的手势panGesture冲突, 不能使用[self.panGesture requireGestureRecognizerToFail:collectionView.panGesture], 会造成不响应self.panGesture的手势。故通过Gesture的代理方法- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer; 来屏蔽掉左右扫动,只保留响应上下扫动。通过 - (CGPoint)velocityInView:(nullable UIView *)view 方法来获取速率,通过X轴Y轴上的速率大小,来判断扫动方向。

5:  处理上下扫动时的位移,旋转。获取旋转的角度。例如,右下拖动。angle = M_PI_2 * Y轴拖动距离 / 屏幕高度。 右下拖动即为:-angle。

Github:https://github.com/jifeif/FFBasicFrameWork

iOS-项目开发1-图片浏览器的更多相关文章

  1. 聚合数据 iOS 项目开发实战:条码查询器

    记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...

  2. iOS项目开发常用功能静态库

    YHDeveloperTools iOS项目开发常用功能静态库 查看源码 功能方法: 1.字符检查 [NSString checkStringWithType:Email andTargetStrin ...

  3. iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示

    文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学 ...

  4. ios项目开发汇总

    UI界面 iOS和Android 界面设计尺寸规范  http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范  http://www. ...

  5. iOS项目开发优秀文章汇总

    UI界面 iOS和Android 界面设计尺寸规范  http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范  http://www. ...

  6. iOS项目开发实战——通过Http Get方式与server通信

    移动client往往须要同后台server进行通信,上传或者下载数据,最经常使用到的方式就是Http Get,如今我们来学习在iOS项目中使用Get方式同server进行通信. [一]server端实 ...

  7. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  8. iOS项目开发实战——使用CoreLocation获取当前位置信息

    随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLoc ...

  9. iOS项目开发实战——iOS网络编程获取网页Html源码

    现在我们身处互联网的时代.不论什么一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比較low,这里我们将会開始使用Swift开发iOS应用,而且主要来 ...

  10. iOS:第三方框架MJPhotoBrowser图片浏览器的使用

    介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片.网络图片.gif图片等,其也依赖了SDWebImage.SVProgressHUD.YLGIFI ...

随机推荐

  1. python的数字图像处理学习(1)

    导入原有的测试图片,测试图片路径,和一些方法,显示出测试图像,测试图像路径. from skimage import io,data,data_dir img_rgb=data.chelsea() i ...

  2. 【转】CentOS 7 安装配置 NFS

    环境 nps 192.168.1.97 client 192.168.1.98 一.yum 安装 yum -y install nfs-utils rpcbind nfs 的配置文件 /etc/exp ...

  3. vue 开发系列(四) vue 使用外部JS

    概要 在开发时我们会经常需要使用到外部的JS,这样我们需要引入外部js,然后进行使用. 实现方法 我们在开发的过程中需要使用到 sha256 将用户的密码进行加密传输. 我们对js进行一点点改造. f ...

  4. 1.The Necessity of a Broad Education 全面教育的必要性

    1.The Necessity of a Broad Education 全面教育的必要性 (1) According to a survey,which was based on the respo ...

  5. python科学计算模块NumPy

    NumPy是Numerical Python的简称,是高性能科学计算和数据分析的基础包.其实NumPy 本身并并没有提供太多的高级的数据分析功能, 但是理解NumPy数组以及面向数组的计算将有利于你更 ...

  6. 小论文matlab作图技巧

    小论文matlab作图技巧 编辑->复制选项 编辑->图形属性 图中右击->字型 编辑->复制图片,即可. 效果: 宽:5.9高: 7.91

  7. linux ps查进程 kill关闭进程

    原文链接:http://blog.sina.com.cn/s/blog_53855ace0100ded4.html 首先,我们需要使用linux下另外一个ps命令查找与进程相关的PID号:ps aux ...

  8. MVC 图片上传 带进度条(转)

    MVC 图片上传小试笔记 form.js 这个插件已经是很有名的,结合MVC的html辅助方法异步上传就很简单了.jQuery Form Plugin :http://www.malsup.com/j ...

  9. c51较c比较,单片机最小系统

    sfr(Special function registers):特殊功能寄存器声明 bit:位变量声明 sbit:特殊位声明 psw^2,表示psw寄存器上的第2位 << >> ...

  10. ajax请求也可以用form表单向后台提交数据!!!!

    激动的我简直语无伦次,不说了上代码,用ajax实现form表单数据的请求,啦啦啦啦 html: <form> <input name="userName" val ...