七大手势中tap ,lingers,swipe比较简单,常用属性不多,可以翻阅API.
pinch ,pan,rotation需要用到仿射变换(注意,带有make的仿射变化都只能以最初的状态为基准点进行变换,所以会有弹回效果,如果不想以最初状态为基准点,我们选择不带make的变化).
当轻扫和平移同时存在的时候,默认优先平移操作.
一个轻扫手势只能支持一种方向,如果需要将一个视图支持多种方向的清扫,可以在此视图上添加多个手势.
以平移为例:
/ //平移手势执行的操作
// CGPoint offset = [sender translationInView:sender.view];//获得这个手势所在的视图的偏移量(平移增量)
// sender.view.center = CGPointMake(sender.view.center.x + offset.x, sender.view.center.y + offset.y) ;
// //将偏移量归0
// [sender setTranslation:CGPointZero inView:sender.view]; 这个方法比较老
//------------------放射变换-------------------
//----------- CGAffineTransform-------------
//获得当前视图的偏移量
CGPoint offset = [sender translationInView:sender.view];
//修改视图的transform属性(获取经过仿射变化之后的点)
// sender.view.transform = CGAffineTransformMakeTranslation(offset.x, offset.y);相当于
// sender.view.transform = CGAffineTransformMake(1, 0, 0, 1, offset.x, offset.y);
//但是由于该方法变化过程只能以最初的状态为基准点,所以会有弹回效果
sender.view.transform = CGAffineTransformTranslate(sender.view.transform, offset.x, offset.y);
[sender setTranslation:CGPointZero inView:sender.view];