UI_UIGestureRecognizer(触摸手势)
来源:互联网 发布:大唐电信数据所招聘 编辑:程序博客网 时间:2024/06/05 21:12
1..所有的触摸手势的父类是UIGestureRecognizer,但我们平时都用它的每个单独的子类,包含点击,拖拽,捏合,拖动等,
2..- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor =[UIColor lightGrayColor]; NSArray *imageArr =@[@"0",@"1.jpg",@"3.jpeg"]; for (int i=0;i<imageArr.count; i++) { UIImageView *imgV =[[UIImageView alloc]initWithFrame:CGRectMake(10, 40+i*130, 100, 100)]; imgV.image =[UIImage imageNamed:imageArr[i]]; imgV.userInteractionEnabled=YES; [self addGesture:imgV]; [self.view addSubview:imgV]; } }-(void)addGesture:(UIView*)view{ //点(单击)手势 UITapGestureRecognizer *tapGes =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGr:)]; tapGes.numberOfTapsRequired = 2;//设置点击次数 tapGes.numberOfTouchesRequired = 1;//设置手指数 [view addGestureRecognizer:tapGes]; //拖拽移动手势 UIPanGestureRecognizer *panGes =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGr:)]; [view addGestureRecognizer:panGes]; //捏合手势 UIPinchGestureRecognizer *pinchGes =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGr:)]; [view addGestureRecognizer:pinchGes]; //旋转手势 UIRotationGestureRecognizer *rotationGes =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotation:)]; [view addGestureRecognizer:rotationGes]; //长按手势 UILongPressGestureRecognizer *longGes =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longG:)]; [view addGestureRecognizer:longGes]; //轻扫手势(和拖拽手势有冲突)默认为右 加一个方向,实例化一个轻扫手势 设置swipe.direction方向// UISwipeGestureRecognizer *swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];// swipe.direction = UISwipeGestureRecognizerDirectionUp;// [view addGestureRecognizer:swipe]; }#pragma mark 单击//传的参数就是手势本身-(void)tapGr:(UITapGestureRecognizer *)tapGr{// tapGr.view 响应手势的视图//点击旋转 tapGr.view.transform =CGAffineTransformRotate(tapGr.view.transform, M_PI_2);}#pragma mark 拖拽移动-(void)panGr:(UIPanGestureRecognizer*)panGr{ //获取手势移动的坐标 CGPoint move =[panGr translationInView:self.view]; //当前的中心点加上移动的坐标 panGr.view.center =CGPointMake(panGr.view.center.x +move.x, panGr.view.center.y +move.y); //每次动都会累加 每次动都得清零 [panGr setTranslation:CGPointZero inView:self.view]; }#pragma mark 捏合手势-(void)pinchGr:(UIPinchGestureRecognizer*)pinchGs{ //响应的View的改变 (利用 比例 修改大小) 一参是修改前的形态 二参是横向.比例 三参是纵向.比例 pinchGs.view.transform =CGAffineTransformScale(pinchGs.view.transform, pinchGs.scale, pinchGs.scale); //设置比例为1 pinchGs.scale =1; }#pragma mark 旋转-(void)rotation:(UIRotationGestureRecognizer*)rotationGR{ rotationGR.view.transform = CGAffineTransformRotate(rotationGR.view.transform, rotationGR.rotation); //旋转的倍数 rotationGR.rotation =1; }#pragma mark 长按手势-(void)longG:(UILongPressGestureRecognizer*)longGr{//longGr.state 当前手势的状态 //长按手势会被多次调用,使用候需要判断状态 //长按刚一生效调用 if(longGr.state ==UIGestureRecognizerStateBegan) { //创建一个核心动画 CABasicAnimation *basicA =[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; //动画起始角度 basicA.fromValue = @0; //结束角度 basicA.toValue =@(M_PI*5); //完成一次时间 basicA.duration =1; //一次完成后的是否动画还原 basicA.autoreverses =YES; //动画次数 basicA.repeatCount =10; //添加到 View的layer层 [longGr.view.layer addAnimation:basicA forKey:@"ii"]; //key用来取消 // [longGr.view.layer removeAnimationForKey:@"ii"]; } }#pragma mark 轻扫手势-(void)swipe:(UISwipeGestureRecognizer *)swipe{ //判断轻扫手势的方向 if(swipe.direction ==UISwipeGestureRecognizerDirectionRight) { NSLog(@"向右扫"); CGRect rect =swipe.view.frame; rect.origin.x +=10; swipe.view.frame =rect; } // & 按位与 direction向上 if (swipe.direction & UISwipeGestureRecognizerDirectionUp) { CGRect rect = swipe.view.frame; rect.size.height += 10; rect.origin.y -= 10; swipe.view.frame = rect; } }
0 0
- UI_UIGestureRecognizer(触摸手势)
- 触摸手势
- 触摸手势
- touch手势与触摸
- 轻击,触摸和手势
- 触摸屏幕手势识别
- 触摸与手势
- Android 手势&触摸事件
- Android 手势&触摸事件
- android 触摸手势 OnGestureListener
- Android 手势&触摸事件
- 触摸与手势原理
- 触摸事件和手势
- IOS手势及触摸
- UIview 添加触摸.手势
- iOS 手势及触摸
- 触摸事件 手势
- iOS 手势及触摸
- 测试
- 逻辑回归和SVM的区别
- 转:Java学习路线图,专为新手定制的Java学习计划建议
- 模态ViewController及单例
- 项目开发注意事项
- UI_UIGestureRecognizer(触摸手势)
- zoj 3724(离线处理+树状数组)
- 并发 并行 同步 异步 多线程的区别
- 1032. Sharing (25)
- LeetCode之Repeated DNA Sequences
- 文章只要修改或编辑就进入不可见状态?
- 高仿系列————主页界面(storyboard)
- 依赖注入和控制反转区别
- iOS多线程