首页 > 试题广场 >

IOS系统提供了那些手势?请选择一个自己写代码实现 。

[问答题]
IOS系统提供了那些手势?请选择一个自己写代码实现
UITapGestureRecognizer敲击手势(单击和双击)
UIPanGestureRecognizer(拖动手势)
UIPinchGestureRecognizer(缩放手势)
UISwipeGestureRecognizer(擦碰手势)
UIRotationGestureRecognizer(旋转手势)
UILongPressGestureRecognizer(长按手势)

   

    UIView *gestureView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 300, 300)];

    gestureView.backgroundColor = [UIColor blackColor];

    [self.view addSubview:gestureView];

    

    /*---------------点击手势-------------*/

    

    UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap1Action:)];

    //注意:一个点击手势,只能识别一种手势,单击和双击是不同的两个手势

    //设置点击的数量

    tap1.numberOfTapsRequired = 1 ;

    //设置点击的个数

    tap1.numberOfTouchesRequired = 1 ;

    //gestureView上添加一个手势

    [gestureView addGestureRecognizer:tap1];

    

    UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap2Action:)];

    tap2.numberOfTapsRequired = 2 ;

    [gestureView addGestureRecognizer:tap2];

    

    //如果参数中的手势出发了,则自身失效

    [tap1 requireGestureRecognizerToFail:tap2];

    

    

    /*---------------轻扫手势-------------*/

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc ] initWithTarget : self action : @selector (swipe:)];

    // 设置方向---向上轻扫

    swipeGesture. direction = UISwipeGestureRecognizerDirectionUp;

    [gestureView addGestureRecognizer:swipeGesture];

    

    

    /*---------------平移手势-------------*/

    // 平移手势(滑动)

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc ] initWithTarget : self action : @selector (panAction:)];

    [gestureView addGestureRecognizer:panGesture];

    

    

    /*---------------长按手势-------------*/

    // 长按手势

    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc ] initWithTarget : self action : @selector (longPress:)];

    //设置长安的最短时间

    longPressGesture.minimumPressDuration = 3;

    [gestureView addGestureRecognizer:longPressGesture];

    

    /*---------------旋转手势-------------*/

    // 旋转手势

    UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc ] initWithTarget : self action : @selector (rotation:)];

    [gestureView addGestureRecognizer:rotationGesture];

    

    /*----------捏合手势--------------*/

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc ] initWithTarget : self action : @selector (pinchAction:)];

    [gestureView addGestureRecognizer:pinch];

}


//单击

- (void)tap1Action:(UITapGestureRecognizer *)tap1

{

    NSLog(@" 单击 ");

}


//双击

- (void)tap2Action:(UITapGestureRecognizer *)tap2

{

    NSLog(@" 双击 ");

}


//轻扫

- ( void )swipe:(UISwipeGestureRecognizer *)swipe

{

    if (swipe. direction == UISwipeGestureRecognizerDirectionUp) {

        NSLog(@" 向上清扫 ");

    }

}


//平移

- ( void )panAction:(UIPanGestureRecognizer *)pan

{

    CGPoint p = [pan locationInView:pan.view];

    NSLog( @"%@" , NSStringFromCGPoint(p));

}


//长按

- ( void )longPress:(UILongPressGestureRecognizer *)longPress

{

    if (longPress. state == UIGestureRecognizerStateBegan) {

        NSLog(@" 开始长按 ");

    } else if (longPress. state == UIGestureRecognizerStateEnded) {

        NSLog(@" 结束长按 ");

    }

}


//旋转

- ( void )rotation:(UIRotationGestureRecognizer *)rotation

{

    //获取旋转角度---弧度

    CGFloat r = rotation.rotation;

    

    //弧度转角度

    //180/Pi = x/r

    NSLog(@"r is %.2f", 180 / M_PI * r);

}



//捏合

- (void)pinchAction:(UIPinchGestureRecognizer *)pinch

{

    //获得捏合的比例

    CGFloat scale = pinch.scale;

    

//    pinch.view.transform = CGAffineTransformScale(pinch.view.transform, scale, scale);

    pinch.view.transform = CGAffineTransformMakeScale(scale, scale);

    

}


发表于 2015-10-08 14:14:31 回复(0)

- (void)viewDidLoad {

    [ super viewDidLoad];

    //创建imagemView

    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Elephant.jpg"]];

    self.imageView = imageView;

    [self.view addSubview:imageView];

    //设置初始状态

    [ self loadImageView];

    

    //对imageView添加手势

    imageView.userInteractionEnabled = YES ;

    UIPanGestureRecognizer *panGR = [[UIPanGestureRecognizer alloc ] initWithTarget : self action : @selector (pan:)];

    [ self . imageView addGestureRecognizer:panGR];

    

    UIPinchGestureRecognizer *pinchGR = [[UIPinchGestureRecognizer alloc ] initWithTarget : self action : @selector (pinch:)];

    [ self . imageView addGestureRecognizer:pinchGR];

    

    UIRotationGestureRecognizer *rotationGR = [[UIRotationGestureRecognizer alloc ] initWithTarget : self action : @selector (rotation:)];

    [self.imageView addGestureRecognizer:rotationGR];

    

    UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap:)];

    tapGR.numberOfTapsRequired = 2 ;

    [ self . imageView addGestureRecognizer:tapGR];

    

}




//移动

-( void )pan:(UIPanGestureRecognizer *)gr{

    //第一种方式:修改中心点实现位移

    //    CGPoint translation = [gr translationInView:self.view];

    //    CGPoint center = self.imageView.center;

    //    center.x+=translation.x;

    //    center.y+=translation.y;

    //    self.imageView.center= center;

    //    [gr setTranslation:CGPointZero inView:self.view];

    //第二种方式:修改transform实现位移

    // 读取位移值时,需要确定一个坐标系

    // 读取imageView坐标系下的值,

    // 则用于修改imageView坐标系下的transform

    

    // 读取self.view坐标系下的值

    // 则需要用于修改self.view坐标系下的center属性

    CGPoint translation = [gr translationInView:self.imageView];

    self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, translation.x, translation.y);

    [gr setTranslation: CGPointZero inView: self . imageView ];

    

}


//缩放

-( void )pinch:(UIPinchGestureRecognizer*)sender

{

    self.imageView.transform = CGAffineTransformScale(self.imageView.transform, sender.scale, sender.scale);

    sender.scale = 1;

}


//旋转

-( void )rotation:(UIRotationGestureRecognizer*)sender

{

    self . imageView .transform = CGAffineTransformRotate ( self . imageView .transform, sender.rotation);

    sender.rotation = 0;

}


//点击

-( void )tap:(UITapGestureRecognizer *)gr

{

    [ self loadImageView];

}



-(void)loadImageView{

    //设置中心点

    //self.imageView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);

    self . imageView .center = self .view.center;

    

    CGFloat scaleX = self .view.bounds.size.width/ self . imageView .bounds.size.width;

    CGFloat scaleY = self .view.bounds.size.height/ self . imageView .bounds.size.height;

    //设置缩放

    self.imageView.transform = CGAffineTransformMakeScale(MIN(scaleX, scaleY), MIN(scaleX, scaleY));

}


发表于 2015-09-01 15:51:19 回复(0)