回顾:
绘图
两点:
1. 绘图代码写在哪?
a. 继承自UIView后重写drawRect
b. 在控制器中,代码写在UIGraphicsBeginImage...和EndImage之间
2. 绘图代码能写几种风格?
a. 使用UIKit中UIColor NSString UIImage UIBezierPath中封装完的常用绘图方法
b. 使用底层的Core Graphics c函数
3. 如何重绘?
setNeedDIsplay
今天
1. 手势
1.1 什么是手势?
用户在左触屏动作时,一些有特定规律的移动轨迹,叫做手势
1.2 有哪些手势?
一次性手势 (方法只执行一次)
Tap 点 按
Swipe 轻扫
连续性手势 (方法会执行多次)
LongPress 长按
Pan 拖动
Pinch 捏合 外扩
Rotation 旋转
1.3 手势的本质
将用户针对设备屏幕的物理性动作,转换成计算机能够处理的数据,也就是说把动作转换成了一个数据存起来,所以,在机器内,手势最总都是程序中得一个对象,对手势的处理,就是分析这个对象中存储的数据,掌控用户的动作,再来响应
1.4 如何使用手势?
所有手势都从 UIGestureRecognize 派生而来
系统提供的手势有如下:
UITapGestureRecognizer
UISwipeGestureRecognizer
UILongPressGesutreRecognizer
UIPanGestureRecognizer
UIPinchGestureRecognizer
UIRotationGestureRecognizer
1.5 如何使用手势
step 1:创建手势对象
step 2:设定手势的常用属性
step 3:将手势与具体的视图绑定在一起(只有在绑定的视图上,做该手势时,系统才会做出响应)
1.6 UITapGestureRecognizer
一次性手势:点 按
常用设置属性
// 设置需要的点按次数
tapGR.numberOfTabsRequired = 2;
// 设置需要的触点个数
tapGR.numberOfTouchesRequired = 1;
1.7 UISwipeGestureRecognizer
一次性手势:轻扫
重要属性:方向 direction
注意:设置支持的方向时,不能同时把四个方向都或到一起,也不能将上下或左右同时设置,因为无法界定用户的有一定角度的手势,是向左右还是上下。
1.8 UILongPressGestureRecognizer
连续性手势,长按
重要属性:minimumPressDuration
1.9 UIPinchGestureRecognizer
连续性手势:捏合 外扩
重要的可读写属性:
velocity:动作的数独 向外扩时为正值,向内捏合时为负值
scale:每一次动作发生后,两个触点之间的距离相对于动作起始时,两触点之间的距离的变化倍数
1.11 UIPanGestureRecognizer
连续性手势:拖拽
重要的方法:
locationInView 获取触点在某个视图中得坐标点位置
1.12 UIRotationGestureRecognizer
连续性手势:旋转
重要的属性:
rotation:获取旋转后的位置相对于动作起始点便宜的弧度
2. 变形
2.1 什么是变形?(transform)
视图发生了位移 缩放 旋转这样的变化时,叫做变形
2.2 如何实现变形
通过修改视图的transform属性完成变化的效果
位移:translation
缩放:scale
旋转:rotation
2.3 transform 属性
类型:CGAffineTransform类型的结构体,也称放射变换
结构体中包含了6个可变的数值和3个定值,组成了3X3的矩阵,只要修改矩阵中6个数值中得某几个,就可以实现变形。
2.4 修改transform属性的API
位移变换:
CGAffineTransformMakeTranslation()
CGAffineTransformTranslate()
缩放变换:
CGAffineTransformMakeScale()
CGAffineTransformScale()
旋转变换:
CGAffineTransformMakRotation()
CGAffineTransformRotate()
以上方法可以分成两大组:
带有make:变换是 基于 “视图最开始没有任何变形” 的这个状态来变形
没有make:变换是 基于 “传入的transform的值” 进行变形
重点注意:变形与自动布局(Auto Layout)是冲突的,所以在使用变形时,要关闭自动布局,否则,产生的效果无法预计
在哪里关闭自动布局?
随便选择一个 小黄球控制器,在右侧的第一个检查器中,将Auto Layout前面的复选框 勾掉即可
2.5 熟悉API
2.6 手势+变形 实现图片查看
2.7 如何让多手势并存
step 1:设置两个需要并存的手势的代理为当前控制器
step 2:当前控制器遵守协议
step 3:控制器实现方法
注意:如果手势添加到了imageVIewshang ,要设置图片的userInteractionEnable为YES,也就是需要开启用户交互功能
作业:图片查看器
1》使用代码的方式向view添加一个UIImageView对象,UIImageView的大小和加载的图片的大小一致,所以找一张大得图片(推荐:使用Elephant.jpg)
2》使用center属性将ImageView移动到屏幕的中间
3》使用transform属性将imageView缩放到屏幕刚刚好能显示下图片的全部
4》对iamgeVIew增加rotation手势,支持图片的选择
5》对iamgeVIew增加pinch手势,支持图片的缩放
6》对imageView增加pan手势,支持图片的移动
7》对imageView增加tap手势,双击后,恢复到第3步