UIGestureRecognizer

iOS开发UI篇—transframe属性(形变)

iOS开发UI篇—transframe属性(形变)

1. transform属性

在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

常用的创建transform结构体方法分两大类

(1) 创建“基于控件初始位置”的形变

CGAffineTransformMakeTranslation(平移)

CGAffineTransformMakeScale(缩放)

CGAffineTransformMakeRotation(旋转)

 

(2) 创建“基于transform参数”的形变

CGAffineTransformTranslate

CGAffineTransformScale

CGAffineTransformRotate

 



//UIImageView

    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]];
    imageView.frame = CGRectMake(20, 100, self.view.frame.size.width-40     ,self.view.frame.size.width-40);
    [self.view addSubview:imageView];
    
    //设置交互
    imageView.userInteractionEnabled = YES;
    
//    //添加轻拍手势
//    UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGRAction:)];
//    
//    //在图片上添加手势
//    [imageView addGestureRecognizer:tapGR];
//    
//    //设置双击
//    tapGR.numberOfTapsRequired = 2;
//    
//    
//    //添加旋转手势
//    UIRotationGestureRecognizer *rotationGR = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGRAction:)];
//    [imageView addGestureRecognizer:rotationGR];
//    
//    
//   
//    //添加缩放手势
//    UIPinchGestureRecognizer *pinchGR = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGRAction:)];
//    
//    [imageView addGestureRecognizer:pinchGR];
//    
//    
//    
//    //添加长按手势
//    UILongPressGestureRecognizer *longGR = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longGRAction:)];
//    [imageView addGestureRecognizer:longGR];
//    
//    //添加平移手势
//    UIPanGestureRecognizer *panGR = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGRAction:)];
//    //将手势添加到图片上
//    [imageView addGestureRecognizer:panGR];
    
    //添加清扫手势
//    UISwipeGestureRecognizer *swipeGR = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGRAction:)];
//    
//    //设置清扫方向
//    swipeGR.direction = UISwipeGestureRecognizerDirectionLeft;//向左
//    
//    //设置需要几根手指触碰
//    swipeGR.numberOfTouchesRequired = 2;
//
//    [imageView addGestureRecognizer:swipeGR];
    
    
    //在屏幕边缘清扫手势(iOS7中新增的功能)
    UIScreenEdgePanGestureRecognizer *screenEdgeGR = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenEdgeGRAction:)];
    //设置屏幕边缘方向
    screenEdgeGR.edges = UIRectEdgeLeft;
    
    [imageView addGestureRecognizer:screenEdgeGR];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//轻拍事件
-(void)tapGRAction:(UITapGestureRecognizer *)sender{
    NSLog(@"kfdoeosoew");
}


//旋转事件
-(void)rotationGRAction:(UIRotationGestureRecognizer *)sender
{
    //获取旋转的坐标
    NSLog(@"%f",sender.rotation);
    NSLog(@"%@",sender.view);
    
    //通过手势,获取到作用的视图
    UIImageView *image = (UIImageView *)sender.view;
    
    //永远从初始位置旋转
    image.transform = CGAffineTransformMakeRotation(sender.rotation);

    //从image.transform的位置旋转多少弧度
    image.transform = CGAffineTransformRotate(image.transform,sender.rotation);
    
    //旋转完成,将值设置为0(重置角度,因为在这个方法在旋转时会被调用)
    sender.rotation = 0;
}

//缩放事件
-(void)pinchGRAction:(UIPinchGestureRecognizer *)sender
{
    
    //通过手势,获取到作用的视图
    UIImageView *image = (UIImageView *)sender.view;
    
    //设置image的位置
    //image.transform = CGAffineTransformMakeScale(3,1);
    
    
    image.transform = CGAffineTransformScale(image.transform, sender.scale, sender.scale);
    
    //每次设置缩放倍数为原来的倍数
    sender.scale = 1;
    
    
}


//长按事件
-(void)longGRAction:(UILongPressGestureRecognizer *)sender
{
//    //通过手势,获得到作用的视图
//    UIImageView *image = (UIImageView *)sender.view;
//    

    
    //最少持续按压的秒数和允许活动的范围
    NSLog(@"%lf",sender.minimumPressDuration);
    NSLog(@"%lf",sender.allowableMovement);
}


//平移事件
-(void)panGRAction:(UIPanGestureRecognizer *)sender
{
    //找到添加手势的图片
    UIImageView *image = (UIImageView *)sender.view;
    //拿到平移的坐标点在父视图上的偏移量
    CGPoint point = [sender translationInView:self.view];
    NSLog(@"平移后的坐标偏移量是:%@",NSStringFromCGPoint([sender translationInView:image]));
    //重新设置image的中心点
    image.center = CGPointMake(image.center.x+point.x, image.center.y+point.y);
    //重置手势获取的偏移量
    [sender setTranslation:CGPointZero inView:self.view];
}

//清扫事件
-(void)swipeGRAction:(UISwipeGestureRecognizer *)sender
{
      NSLog(@"实现了清扫功能");
}


//屏幕边缘清扫事件
-(void)screenEdgeGRAction:(UIScreenEdgePanGestureRecognizer *)sender
{
    NSLog(@"%d,%s",__LINE__,__FUNCTION__);
    NSLog(@"实现了屏幕边缘清扫功能");
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值