//
// ViewController.m
// UITouchTEST
//
// Created by on 16/7/21.
// Copyright © 2016年. All rights reserved.
//
#import "ViewController.h"
@interface ViewController (){
UIView *_view;
}
//初始化数据源
-(void)initializeDataSource;
//初始化用户界面
-(void)initializeUserInterface;
-(void)processGesture:(UIGestureRecognizer *)gesture;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[selfinitializeDataSource];
[selfinitializeUserInterface];
}
//初始化数据源
-(void)initializeDataSource{
}
//初始化用户界面
-(void)initializeUserInterface{
_view = [[UIViewalloc]initWithFrame:CGRectMake(0,0, 200,200)];
[_viewsetCenter:CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds))];
[_viewsetBackgroundColor:[UIColorredColor]];
[self.viewaddSubview:_view];
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(processGesture:)];
[tap setNumberOfTapsRequired:2];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(processGesture:)];
[_viewaddGestureRecognizer:tap];
[_viewaddGestureRecognizer:pinch];
}
//触摸移动手势
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touchesanyObject];
if(touch.view==_view){
CGPoint previousLocation = [touchpreviousLocationInView:_view];
CGPoint currentLocation = [touchlocationInView:_view];
CGPoint LocationOffset =CGPointMake(currentLocation.x-previousLocation.x, currentLocation.y-previousLocation.y);
[_viewsetCenter:CGPointMake(_view.center.x+LocationOffset.x,_view.center.y+LocationOffset.y)];
}
}
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[UIViewbeginAnimations:@"回到中心"context:nil];
[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIViewsetAnimationDuration:0.6];
[_viewsetCenter:CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds))];
[UIViewcommitAnimations];
}
//proce
-(void)processGesture:(UIGestureRecognizer *)gesture{
if([gestureisKindOfClass:[UITapGestureRecognizerclass]]){
NSLog(@"轻巧两次");
}elseif([gestureisKindOfClass:[UIPinchGestureRecognizerclass]]){
staticCGFloat previousScale;
UIPinchGestureRecognizer *pinch = (UIPinchGestureRecognizer *)gesture;
if(pinch.state ==UIGestureRecognizerStateBegan){
previousScale = pinch.scale;
}
elseif(pinch.state==UIGestureRecognizerStateChanged){
_view.transform =CGAffineTransformScale(_view.transform, (pinch.scale-previousScale)/2+1, (pinch.scale-previousScale)/2+1);
previousScale = pinch.scale;
}
}
else{
NSLog(@"未识别的手势");
}
}
@end