手势
来源:互联网 发布:java排序方法有哪些 编辑:程序博客网 时间:2024/04/29 17:40
//// MainViewController.m// UI05_手势识别器//// Created by dllo on 15/8/4.// Copyright (c) 2015年 dllo. All rights reserved.//#import "MainViewController.h"@interface MainViewController ()<UIAlertViewDelegate>@property(nonatomic, retain)UIImageView *imageView;@property(nonatomic, assign)BOOL isOn;@property(nonatomic, retain)UIAlertView *warning;@property(nonatomic, assign)CGAffineTransform transform;@property(nonatomic, assign)CGAffineTransform originTransform;@property(nonatomic, retain)UILabel *label;@end@implementation MainViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIImage *image = [UIImage imageNamed:@"9f35c606f52b0d55a333356b74187acf.jpeg"]; _imageView = [[UIImageView alloc] initWithImage:image];// UIImage *image2 = [UIImage imageNamed:@"MA~LR_T3(UZ9]`UQ_5T6P%U.jpg"]; self.imageView.frame = CGRectMake(40, 40, 280, 400); [self.view addSubview:self.imageView]; // 把图片的用户交互打开,它默认是关闭的,此外还有一个控件是label self.imageView.userInteractionEnabled = YES; // 手势的使用 // 1.点击 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; // 设置点击几次才会触发方法 tap.numberOfTapsRequired = 2; // 设置几根手指 tap.numberOfTouchesRequired = 2; // 手势添加到图片上 [self.imageView addGestureRecognizer:tap]; [tap release]; UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]; // 设置长按触发的最小时间 longPress.minimumPressDuration = 2; // 用户手指在长按过程中允许移动的距离 longPress.allowableMovement = 200; // 把手势添加到图片上 [self.imageView addGestureRecognizer:longPress]; [longPress release]; // 3.创建一个旋转的手势 UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotaionAction:)]; // 把手势放到图片上 [self.imageView addGestureRecognizer:rotation]; // 释放 [rotation release]; self.originTransform = self.imageView.transform; self.transform = self.imageView.transform; // 4.捏合 // 创建 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)]; // 添加 [self.imageView addGestureRecognizer:pinch]; // 释放 [pinch release]; // 5.拖拽 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)]; [self.imageView addGestureRecognizer:pan]; [pan release]; // 6.清扫 UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)]; [self.imageView addGestureRecognizer:swipe]; [swipe release]; // 7.屏幕边际手势,iOS7.0之后出现的手势 // 崔某分享// UIScreenEdgePanGestureRecognizer UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(200, 500, 100, 30)]; [self.view addSubview:stepper];[stepper release]; self.label = [[UILabel alloc]initWithFrame:CGRectMake(75, 500, 100, 30)]; self.label.layer.borderWidth = 1; [self.view addSubview:self.label];[self.label release]; [stepper addTarget:self action:@selector(click:) forControlEvents:UIControlEventValueChanged]; self.label.text = @"1"; stepper.wraps = NO; // 循环 stepper.minimumValue = 0.1; stepper.maximumValue = 4; stepper.stepValue = 0.1; stepper.value = 1; stepper.autorepeat = YES; // 持续递增 stepper.continuous = YES; }- (void)click:(UIStepper *)stepper{ self.label.text = [NSString stringWithFormat:@"%lg",stepper.value]; self.imageView.transform = CGAffineTransformScale(self.transform, stepper.value, stepper.value);}- (void)swipeAction:(UISwipeGestureRecognizer *)swipe{ if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { NSLog(@"向右"); }}- (void)panAction:(UIPanGestureRecognizer *)pan{ UIImageView *imageView = (UIImageView *)pan.view; // 通过手势获得经过的点 CGPoint p = [pan translationInView:imageView]; // 设置移动位置 imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y); // 为了防止手势在操作的时候视图消失 [pan setTranslation:CGPointZero inView:imageView]; self.transform = imageView.transform; }- (void)pinchAction:(UIPinchGestureRecognizer *)pinch{// NSLog(@"测试"); UIImageView *imageView = (UIImageView *)pinch.view; // 通过transform改变图片大小 imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale); // 为了防止手势的变化让图片直接消失 pinch.scale = 1; self.transform = imageView.transform;}- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ self.imageView.transform = self.originTransform; self.label.text = @"1"; self.transform = self.originTransform;}#pragma mark 通过图片的旋转手势让图片发生旋转- (void)rotaionAction:(UIRotationGestureRecognizer *)rotation{// NSLog(@"测试一下旋转"); // 可以通过手势获取手势添加的视图是哪个 UIImageView *imageView = (UIImageView *)rotation.view; // 进行旋转的操作, 通过transform属性,来让视图旋转 imageView.transform = CGAffineTransformRotate(imageView.transform, rotation.rotation); rotation.rotation = 0; self.transform = imageView.transform; }- (void)tapAction:(UITapGestureRecognizer *)tap{ if (self.isOn) { self.imageView.image = [UIImage imageNamed:@"MA~LR_T3(UZ9]`UQ_5T6P%U.jpg"]; } else {self.imageView.image = [UIImage imageNamed:@"9f35c606f52b0d55a333356b74187acf.jpeg"];} self.isOn ^= 1;}- (void)longPressAction:(UILongPressGestureRecognizer *)longPress{ if (!self.warning) { self.warning = [[UIAlertView alloc] initWithTitle:@"注意" message:@"你好" delegate:self cancelButtonTitle:@"拜拜" otherButtonTitles:nil, nil]; } [self.warning show];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
0 0
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- 手势
- SQL一键备份用户数据库
- Vistual Studio 筛选器
- poj-2240-Arbitrage-最短路 BF
- android listview优化几种写法详细介绍
- 行为型模式-访问者模式
- 手势
- Android 圆弧形进度条 自定义View
- 出现Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds.
- Android 圆弧形进度条 自定义View
- UIWebView经常用到的方法
- Android 圆弧形进度条 自定义View
- Android Looper And Hander 机制剖析 - 03
- 2015年工作中遇到的问题:1-10
- HDU 5351 MZL's Border(大数+规律)