UI__UIGestureRecognize

来源:互联网 发布:linux重启tomcat服务 编辑:程序博客网 时间:2024/06/06 01:47

七大手势中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);

    [sendersetTranslation:CGPointZeroinView:sender.view];

    

    



0 0