iOS开发之UI(四)

事件:当用户手指触击屏幕以及在屏幕上移动时,系统不断发送给应用程序的对象,一个UIEvent对象表示一个事件

触摸:有事件控件两方面

  • 时间:手指放下,手指移动,手指抬起

  • 空间:手指放下,移动,抬起的位置

  • 触摸开始
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent: (UIEvent *)event { NSLog(@"开始触摸"); }

  • 手指移动
    - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { UITouch *touch = [[touches allObjects] lastObject]; CGPoint point = [touch locationInView:self]; NSLog(@"x = %f, y = %f", point.x, point.y); }

  • 触摸结束
    - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { NSLog(@"触摸结束"); }

响应者链:一个响应者对象的连接序列,事件或动作消息依次传递

响应者:iOS中所有能响应事件的对象都是响应者,一同定义了一个抽象的父类UIResponder来表示响应者

检查触摸:UIApplications -> window -> ViewController -> view -> 检查所有子视图
处理事件:触摸的子视图 -> view -> ViewController -> window -> UIApplication

视图类的属性userInteractionEnabled可以阻断响应者链
userInteractionEnabled:用户界面响应开关

手势识别器

手势识别器:UIGestureRecognizer,用于识别手势

手势:有规律的触摸

系统提供的手势识别器这个抽象父类我们是不会直接使用,而是根据需求使用特定的子类手势,系统提供的手势类型:

  • 轻拍:UITapGestureRecognizer
  • 长按;UILongPressGestureRecognizer
  • 旋转:UIRotationGestureRecognizer
  • 捏合:UIPinchGestureRecognizer
  • 平移:UIPanGestureRecognizer
  • 轻扫:UISwipeGestureRecognizer
  • 屏幕边缘轻扫:UIScreenEdgePanGestureRecognizer

创建方法

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];

添加方法

[self.imageView addGestureRecognizer:tap];

其他类同理

View的transform属性

transform:能改变view的现实状态,实现view的缩放、旋转、平移

  • 平移:CGAffineTransformMakeTranslation
  • 缩放:CGAffineTransformMakeScale
  • 旋转;CGAffineTransformMakeRotation

方法1,此方法只能改变一次imageView的transform,即第二次触发不生效

self.imageView.transform = CGAffineTransformMakeRotation(1.0);

方法2,此方法能多次触发,意为在当前的transform上再次进行更改

self.imageView.transform = CGAffineTtansformRotation(self.imageView.transform,1.0);

其他方法同理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容