iOS手势开发的那点儿事
生活随笔
收集整理的這篇文章主要介紹了
iOS手势开发的那点儿事
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閑了下來,自己寫寫demo,把iOS有的幾種手勢大致整理了下:
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.mImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 199, 200, 200)];[mImageView setImage:[UIImage imageNamed:@"wade.jpg"]];mImageView.userInteractionEnabled = YES;//默認是關閉的[self.view addSubview:mImageView];//1.拖動手勢UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];[mImageView addGestureRecognizer:pan];//2.長按手勢UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];[mImageView addGestureRecognizer:longPress];//3.輕拍手勢 //numberOfTapsRequired 拍的次數//numberOfTouchesRequired 幾個手指頭在拍UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];singleTap.numberOfTapsRequired = 1; //[mImageView addGestureRecognizer:singleTap];UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];doubleTap.numberOfTapsRequired = 2;singleTap.numberOfTouchesRequired = 3;doubleTap.numberOfTouchesRequired = 3;//雙擊手勢檢測失敗才會觸發單擊手勢相應的操作,不加這句,當用戶響應的是雙擊手勢的時候,會觸發單擊手勢然后會觸發雙擊手勢(其實是不要單擊手勢的)[singleTap requireGestureRecognizerToFail:doubleTap];[mImageView addGestureRecognizer:doubleTap];//4.放大縮小手勢UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];[mImageView addGestureRecognizer:pinch];//5.旋轉手勢UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)];[mImageView addGestureRecognizer:rotation];//6.滑動手勢UISwipeGestureRecognizer *swip = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swip:)];[mImageView addGestureRecognizer:swip];//7.UIScreenEdgePanGestureRecognizer *edge = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(edge:)];[mImageView addGestureRecognizer:edge];
}- (void)handlePan:(UIPanGestureRecognizer *)panGest {CGPoint translation = [panGest translationInView:self.view];panGest.view.center = CGPointMake(panGest.view.center.x + translation.x, panGest.view.center.y + translation.y);[panGest setTranslation:CGPointZero inView:self.view];
}- (void)longPress:(UILongPressGestureRecognizer *)recognizer {UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, mImageView.frame.size.width, 50)];label.backgroundColor = [UIColor redColor];[mImageView addSubview:label];
}- (void)tapClick:(UITapGestureRecognizer *)recognizer {if (recognizer.numberOfTapsRequired == 1) {UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, mImageView.frame.size.width, 50)];label.backgroundColor = [UIColor blueColor];[mImageView addSubview:label];}else if (recognizer.numberOfTapsRequired == 2) {UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, mImageView.frame.size.width, 100)];label.backgroundColor = [UIColor yellowColor];[mImageView addSubview:label];}}- (void)pinch:(UIPinchGestureRecognizer *)recognizer {recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);recognizer.scale = 1;//這個是必須要設置的
}- (void)rotation:(UIRotationGestureRecognizer *)recognizer {recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);recognizer.rotation = 0;
}- (void)swip:(UISwipeGestureRecognizer *)recognizer {recognizer.numberOfTouchesRequired = 2;recognizer.direction = UISwipeGestureRecognizerDirectionRight;
}- (void)edge:(UIScreenEdgePanGestureRecognizer *)recognizer {recognizer.edges = UIRectEdgeRight;if (UIGestureRecognizerStateBegan == recognizer.state || UIGestureRecognizerStateChanged == recognizer.state) {CGPoint translation = [recognizer translationInView:recognizer.view];[UIView animateWithDuration:0.5 animations:^{mImageView.center = CGPointMake(self.view.center.x + translation.x, mImageView.center.y);}];}
}
總結
以上是生活随笔為你收集整理的iOS手势开发的那点儿事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周琦能和范志毅比高下?
- 下一篇: ARM指令集发展概述