iOS-项目开发1-图片浏览器
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-图片浏览器的更多相关文章
- 聚合数据 iOS 项目开发实战:条码查询器
记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...
- iOS项目开发常用功能静态库
YHDeveloperTools iOS项目开发常用功能静态库 查看源码 功能方法: 1.字符检查 [NSString checkStringWithType:Email andTargetStrin ...
- iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学 ...
- ios项目开发汇总
UI界面 iOS和Android 界面设计尺寸规范 http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范 http://www. ...
- iOS项目开发优秀文章汇总
UI界面 iOS和Android 界面设计尺寸规范 http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范 http://www. ...
- iOS项目开发实战——通过Http Get方式与server通信
移动client往往须要同后台server进行通信,上传或者下载数据,最经常使用到的方式就是Http Get,如今我们来学习在iOS项目中使用Get方式同server进行通信. [一]server端实 ...
- 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片
[问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...
- iOS项目开发实战——使用CoreLocation获取当前位置信息
随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLoc ...
- iOS项目开发实战——iOS网络编程获取网页Html源码
现在我们身处互联网的时代.不论什么一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比較low,这里我们将会開始使用Swift开发iOS应用,而且主要来 ...
- iOS:第三方框架MJPhotoBrowser图片浏览器的使用
介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片.网络图片.gif图片等,其也依赖了SDWebImage.SVProgressHUD.YLGIFI ...
随机推荐
- 解决ubuntu常见问题
cd /usr/local/hadoop 1. bash: cd: ~:Permission denied 报错:bash: cd: /usr/local/hadoop:Permission deni ...
- wireshark源码分析二
一.源代码结构 在wireshark源代码根目录下,可以看到以下子目录: 1)物理结构 其中,epan文件夹负责所有网络协议识别工作,plugins里面存放了wireshark所有插件,gtk ...
- [C#]this.Invoke和this.BeginInvoke的区别
private void button1_Click(object sender, EventArgs e) { "; this.Invoke(new EventHandler(delega ...
- spring学习 四 对象的创建
spring中,有三种创建对象的方式 (1)构造创建 (2)实例工厂构造 (3)静态工厂构造 一 构造器创建 在构造器创建对象时,有无参构造和有参构造 两种 (1)在spring中,默认的是无参构造 ...
- Java中的几种对象(POJO,PO,DTO,DAO,BO)
j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的j ...
- Gym - 100735E Restore
E - Restore 题意:输入一个n,输入一个对角线空缺(为0)的n*n的矩阵,要求每一行每一列和对角线的和相同,输出完整的矩阵. 解法:设每一行的和都是sum,用一个h[]数组存每一行的和.则可 ...
- 初识kbmmw 5 中httpsys的支持
前两天kbmmw 发布了5.0 版.里面一个非常令人兴奋的特性就是原生内部支持http.sys. 有关http.sys 的介绍及优势,我就在这里不多说了,大家可以参照一下我以前的文章. 关于http. ...
- 前端之javascript的节点操作和Event
一 节点的增删改查 创建节点:createElement(标签名):创建一个指定名称的节点. 追加节点: 追加一个子节点:somenode.appendChild(标签名) 指定某个位置前面添加一个节 ...
- centos7修改root根目录
1.拷贝/root 原目录的东西到新目录中(包括.xxx文件) /abc 2.修改配置文件 vi /etc/passwd root:x:0:0:root:/root:/bin/bash ==> ...
- centos7 安装网卡
1.虚拟机测试,先开启命令行 su systemctl set-default multi-user.target reboot 2.编辑网卡 虚拟机网络设置成桥接模式 vi /etc/sysconf ...