与时俱进的IT

UI(十四)手势UIResponder

2018-07-30  本文已影响0人  社会主义顶梁鹿

*手势:

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

 手势的几个方法:

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

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

 1、时间戳

 2、点击次数

 3、获得点击的位置***

- (CGPoint)locationInView:(nullable UIView *)view;

 可以通过touches获得某一个触摸事件

locationInView UITouch 找到点击视图的某一个点

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

 UITouch *touch = [touches anyObject];

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

CGPoint point = [touch locationInView:self.view];

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

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

 *手指离开屏幕的时候

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

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

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

手势不调用:

检查是否设置了背景颜色

 **手势分为六大手势

 六大手势都继承自 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);

 **六大手势都有的属性方法⬇️

 UIGestureRecognizer

 *初始化手势的方法

- (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action

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

 addGestureRecognizer:

 *状态属性:state

 UIGestureRecognizerStatePossible,默认

 UIGestureRecognizerStateBegan,开始

 UIGestureRecognizerStateChanged,改变

 UIGestureRecognizerStateEnded,结束

 UIGestureRecognizerStateCancelled,取消

 UIGestureRecognizerStateFailed,失败

上一篇下一篇

猜你喜欢

热点阅读