ios 手势操作举例
来源:互联网 发布:网络情歌 编辑:程序博客网 时间:2024/05/17 07:43
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIView *targetView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; /* UIGestureRecognizer 父类手势带给的东西 初始化方法: - (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action NS_DESIGNATED_INITIALIZER; 给手势添加事件和移动事件 手势的状态 */ //添加单击手势 UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(singleTapAction:)]; [self.view addGestureRecognizer:singleTap]; //双击 UITapGestureRecognizer *doubleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doubleTapAction:)]; doubleTap.numberOfTouchesRequired=2; [self.view addGestureRecognizer:doubleTap]; //单击要想执行必须双击失效 [singleTap requireGestureRecognizerToFail:doubleTap]; //长按手势, UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)]; [self.targetView addGestureRecognizer:longPress]; //捏合手势 UIPinchGestureRecognizer *pinchGesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureAction:)]; [self.targetView addGestureRecognizer:pinchGesture]; //拖拽 UIPanGestureRecognizer *panGesture=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)]; [self.targetView addGestureRecognizer:panGesture]; //旋转 UIRotationGestureRecognizer *rotation=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)]; [self.targetView addGestureRecognizer:rotation]; //旋转要想执行必须缩放失效 [pinchGesture requireGestureRecognizerToFail:rotation]; //左横扫 UISwipeGestureRecognizer *leftswipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(SwipeAction:)]; [self.view addGestureRecognizer:leftswipeGesture]; leftswipeGesture.direction=UISwipeGestureRecognizerDirectionLeft; //右横扫 UISwipeGestureRecognizer *rightSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(SwipeAction:)]; [self.view addGestureRecognizer:rightSwipeGesture]; rightSwipeGesture.direction=UISwipeGestureRecognizerDirectionRight; //上横扫 UISwipeGestureRecognizer *upswipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(SwipeAction:)]; [self.view addGestureRecognizer:upswipeGesture]; upswipeGesture.direction=UISwipeGestureRecognizerDirectionUp; //下横扫 UISwipeGestureRecognizer *downSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(SwipeAction:)]; [self.view addGestureRecognizer:downSwipeGesture]; downSwipeGesture.direction=UISwipeGestureRecognizerDirectionDown;}//横扫-(void)SwipeAction:(UISwipeGestureRecognizer *)sender{ switch (sender.direction) { case UISwipeGestureRecognizerDirectionRight://从右向左滑 { CATransition *animation=[CATransition animation];//创建CATransition 对象 animation.delegate=self; //动画代理 animation.duration=1.0f;//动画持续时间 animation.timingFunction=UIViewAnimationCurveEaseInOut;//速度控制函数,控制动画运行的节奏 animation.type=kCATransitionMoveIn;//设置运动type animation.subtype=kCATransitionFromLeft;//视图向左滑 [sender.view.layer addAnimation:animation forKey:@"move in"]; } break; case UISwipeGestureRecognizerDirectionLeft://从左向右滑 { CATransition *animation=[CATransition animation]; animation.delegate=self; animation.duration=1.0f; animation.timingFunction=UIViewAnimationCurveEaseInOut; animation.type=kCATransitionMoveIn; animation.subtype=kCATransitionFromRight; [sender.view.layer addAnimation:animation forKey:@"move in"]; } break; case UISwipeGestureRecognizerDirectionDown://向下滑 { CATransition *animation=[CATransition animation]; animation.delegate=self; animation.duration=1.0f; animation.timingFunction=UIViewAnimationCurveEaseInOut; animation.type=kCATransitionMoveIn; animation.subtype=kCATransitionFromBottom; [sender.view.layer addAnimation:animation forKey:@"move in"]; } break; case UISwipeGestureRecognizerDirectionUp://向上滑 { CATransition *animation=[CATransition animation]; animation.delegate=self; animation.duration=1.0f; animation.timingFunction=UIViewAnimationCurveEaseInOut; animation.type=kCATransitionMoveIn; animation.subtype=kCATransitionFromTop; [sender.view.layer addAnimation:animation forKey:@"move in"]; } break; default: break; }}//旋转-(void)rotationAction:(UIRotationGestureRecognizer *)sender{ sender.view.transform = CGAffineTransformRotate(sender.view.transform, sender.rotation); sender.rotation=10.0;//旋转速度}//拖拽-(void)panAction:(UIPanGestureRecognizer *)sender{ /* //当手势按在视图上面的点,转为父系坐标 拿到中心点 CGPoint translatedPoint=[sender translationInView:self.view]; CGFloat firstX; CGFloat firstY; if ([sender state]==UIGestureRecognizerStateBegan) { firstX=[sender.view center].x; firstY=[sender.view center].y; } translatedPoint=CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); [sender.view setCenter:translatedPoint];*/ //中心拖拽 /* //当你的状态不等于结束状态,不等于失败状态 if (sender.state != UIGestureRecognizerStateEnded && sender.state != UIGestureRecognizerStateFailed) { CGPoint location = [sender locationInView:sender.view.superview]; sender.view.center = location; }*/ //视图前置操作 [sender.view.superview bringSubviewToFront:sender.view]; //拖拽 CGPoint center = sender.view.center; CGFloat cornerRadius = sender.view.frame.size.width / 2; CGPoint translation = [sender translationInView:self.view]; //NSLog(@"%@", NSStringFromCGPoint(translation)); sender.view.center = CGPointMake(center.x + translation.x, center.y + translation.y); [sender setTranslation:CGPointZero inView:self.view]; //动画效果 if (sender.state == UIGestureRecognizerStateEnded) { //计算速度向量的长度,当他小于200时,滑行会很短 CGPoint velocity = [sender velocityInView:self.view]; CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y)); CGFloat slideMult = magnitude / 200; //NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult); //e.g. 397.973175, slideMult: 1.989866 //基于速度和速度因素计算一个终点 float slideFactor = 0.1 * slideMult; CGPoint finalPoint = CGPointMake(center.x + (velocity.x * slideFactor), center.y + (velocity.y * slideFactor)); //限制最小[cornerRadius]和最大边界值[self.view.bounds.size.width - cornerRadius],以免拖动出屏幕界限 finalPoint.x = MIN(MAX(finalPoint.x, cornerRadius),self.view.bounds.size.width - cornerRadius); finalPoint.y = MIN(MAX(finalPoint.y, cornerRadius),self.view.bounds.size.height - cornerRadius); //使用 UIView 动画使 view 滑行到终点 [UIView animateWithDuration:slideFactor*2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ sender.view.center = finalPoint; } completion:nil]; }}//缩放-(void)pinchGestureAction:(UIPinchGestureRecognizer *)sender{ NSLog(@"xxx"); sender.view.transform=CGAffineTransformMakeScale(sender.scale, sender.scale);}//长按-(void)longPressAction:(UILongPressGestureRecognizer *)sender{ //长按出现通知框 ios 9 if (sender.state==UIGestureRecognizerStateEnded) { UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"标题" message:@"选择照片" preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *photoAction=[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { NSLog(@"调用照相机"); }]; [alertController addAction:photoAction]; UIAlertAction *libraryAction=[UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { NSLog(@"调用本地相册"); }]; [alertController addAction:libraryAction]; UIAlertAction *cancleAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { NSLog(@"取消"); }]; [alertController addAction:cancleAction]; [self presentViewController:alertController animated:YES completion:nil]; }}//单击-(void)singleTapAction:(UITapGestureRecognizer *)sender{ NSLog(@"你单了哈"); //改变背景颜色 if (sender.view.backgroundColor==[UIColor whiteColor]) { sender.view.backgroundColor=[UIColor cyanColor]; }else{ sender.view.backgroundColor=[UIColor whiteColor]; }}//双击-(void)doubleTapAction:(UITapGestureRecognizer *)sender{ NSLog(@"双击");}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}@end
0 0
- ios 手势操作举例
- iOS手势操作
- iOS手势操作
- iOS----手势操作
- ios手势操作
- UIGestureRecognizer 手势操作 iOS
- 手势操作 IOS
- iOS手势操作UIGestureRecognizer
- iOS 手势操作
- iOS-自定义手势操作
- ios简单手势操作2
- iOS UIGestureRecognizer(手势操作)~demo
- IOS- ios的手势操作之UIGestureRecognizer
- ios的手势操作之UIGestureRecognizer浅析
- ios的手势操作之UIGestureRecognizer浅析
- ios的手势操作之UIGestureRecognizer浅析
- ios的手势操作之UIGestureRecognizer浅析
- ios的手势操作之UIGestureRecognizer
- 重新加载验证码的js
- iOS 添加PCH全局引用文件 —— HERO博客
- Linux命令压缩/优化JPG/PNG图片
- Angular 2的核心概念
- 下载更新App
- ios 手势操作举例
- Objective-C Runtime 总结:类和对象 篇
- Angular 2的变化检测
- hdu1179——二分最大匹配数
- ARM方案公司,三星S5PV210核心板,
- 在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能
- swift 学习记录(协议)
- 浅析:手游智能云更新使用方法
- LOAD DATA INFILE 语法