iOS-手势

作者: 磊CC | 来源:发表于2016-04-16 12:34 被阅读287次

    UIResponder

    UIResponder:是一个响应者(传达者)用来响应用户的触摸屏幕的某些事件

    手势

    手势分为六大手势,都继承自UIGestureRecognizer

    1、点击UITapGestureRecognizer

    可以通过手势里面的view属性找到点击的视图

    locationaInView:找到点击的位置

    numberOfTapsRequired设置点击手势的点击次数

    numberOfTouchesRequired设置点击手指的个数

    2、长按UILongPressGestureRecognizer

    minimumPressDuration设置长按的时间多长时间才会去触发

    3、拖拽UIPanGestureRecognizer

    minimumNumberOfTouches最少手指

    maximumNumberOfTouches最多手指

    点击位置是0,0向左减小向上减小可以获得拖动的方向和位置

    CGPoint

    point = [手势translationInView:视图];

    4、捏合UIPinchGestureRecognizer

    使一个视图变形transform ->UIView中的属性可以使视图发生形态上的改变

    变形之后的视图做其他操作不会还原除非用transform里面的还原的方法

    CGAffineTransform让试图改变的类

    CGAffineTransformMakeScale(CGFloat

    sx, CGFloat sy)让视图按照一个比例去变化放大缩小

    CGAffineTransformMakeRotation(CGFloat

    angle)让视图按照一个弧度去改变用于旋转

    CGAffineTransformIdentity还原之前改变的形状

    5、轻扫UISwipeGestureRecognizer

    numberOfTouchesRequired最少手指

    *direction设置轻扫的方向

    这个用法让轻扫的方向是左或者右

    swipe.direction

    = UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionLeft;

    UISwipeGestureRecognizerDirectionRight

    UISwipeGestureRecognizerDirectionLeft

    UISwipeGestureRecognizerDirectionUp

    UISwipeGestureRecognizerDirectionDown

    6、旋转UIRotationGestureRecognizer

    获得手势的旋转角度让imageView随这个角度去变化

    imageView.transform

    = CGAffineTransformMakeRotation(sender.rotation);

    手势的属性方法

    初始化

    -(instancetype)initWithTarget:(nullableid)targetaction:(nullableSEL)action

    *状态属性:state

    UIGestureRecognizerStatePossible,默认

    UIGestureRecognizerStateBegan,开始

    UIGestureRecognizerStateChanged,改变

    UIGestureRecognizerStateEnded,结束

    UIGestureRecognizerStateCancelled,取消

    UIGestureRecognizerStateFailed,失败

    *UIView里面有添加手势的方法要用UIView的对象去调用

    addGestureRecognizer:

    手势的触发方法

    *手指开始触摸屏幕的时候调用

    - (void)touchesBegan:(NSSet *)touches withEvent:(nullableUIEvent*)event;

    注:

    anyObject 获得touches这个集合里面的某一个touch事件

    UITouch *touch = [touches anyObject];

    找到触摸视图上面的触摸点

    CGPointpoint = [touch locationInView:self.view];

    *手指触摸屏幕开始移动的时候

    - (void)touchesMoved:(NSSet*)touches withEvent:(nullableUIEvent*)event;

    *手指离开屏幕的时候

    - (void)touchesEnded:(NSSet*)touches withEvent:(nullableUIEvent*)event;

    *手指因外部事件取消触摸(一些外部事件让取消比如来电话)

    - (void)touchesCancelled:(nullableNSSet *)touches withEvent:(nullableUIEvent *)event;

    注:若手势不调用,检查是否设置了背景颜色。我就犯过这种错误。

    相关文章

      网友评论

        本文标题:iOS-手势

        本文链接:https://www.haomeiwen.com/subject/jlznlttx.html