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. 【搜索】Dungeon Master

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  2. Java的GUI设计

    这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递 一.继承于JFrame   当遇到继承于JFrame的类的时候,可以省去建立对 ...

  3. springboot 配置DRUID数据源

    druid 是阿里开源的数据库连接池. 开发时整合   druid 数据源过程. 1.修改pom.xml <dependency> <groupId>mysql</gro ...

  4. GK888CN与Devexpress报表打印标签

    安装海鸥驱动,貌似打几张也会报错 使用打印机自带的gk888t驱动,用gk888t(EPL)打带二纬码时会报错 需要选择Togther, xrLable 运行 CanShrink

  5. excel2007vba绘图1

    参考:http://club.excelhome.net/thread-480025-1-1.html '----------------------------------------------- ...

  6. 工作总结(一):Linux C

    这三个月以来一直忙着赶进度,没有停下来记录一些东西,很多很好的东西往往只能零零散散地记在草稿本上, 这样偶尔想起来自己都找不到,所以现在抽空总结下来. 这些天做了三件事,其一是在Linux下开发了对接 ...

  7. 基于S2AFCM的子主题划分

    http://sztsg.czlib.net:8088/interlibSSO/goto/2/=jmr9bmjh9mds/KXReader/Detail?dbcode=CJFD&filenam ...

  8. MIT Molecular Biology 笔记7 调控RNA

    视频  https://www.bilibili.com/video/av7973580/ 教材 Molecular biology of the gene 7th edition  J.D. Wat ...

  9. Warning the user/local/mysql/data directory is not owned by the mysql user

    sudo chown -RL root:mysql /usr/local/mysql sudo chown -RL mysql:mysql /usr/local/mysql/data sudo /us ...

  10. css3实现卡牌旋转与物体发光效果

    效果演示 http://demo.qpdiy.com/hxw/CSS3/rotate+light.html 物体旋转: 卡牌同一位置放2张图片,通过设置3D动画旋转实现 animation: card ...