UITouch的一些属性(拼图)

1.移动label

-(void)createLabel{

    for (int i = 0; i < 3; i++) {

        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(11080 + 120*i, 100100)];

        label.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1];

        //手动打开label的交互

        label.userInteractionEnabled = YES;

        label.tag = 100 + i;

        [self.view addSubview:label];

        [label release];

    }

}

UITouch的协议

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"开始触摸,可在此设置收键盘");

}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"触摸事件中断,系统级别的中断,比如触摸过程中有电话进来");

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"触摸结束");

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"移动");

    //touches:集合,里面存放的是多个UITouch的对象

    for (UITouch *touch in touches) {

        //每个UITouch的对象,可以得到所触摸的视图 --> touch.view

        if ([touch.view isKindOfClass:[UILabel class]]) {

            //如果当前触摸的是UILabel --> 调整labelcenter

            //先获取touch在视图中的位置

            CGPoint pt = [touch locationInView:self.view];

            touch.view.center = pt;

            [self.view bringSubviewToFront:touch.view];

        }

    }

}

2.拼图

-(void)createInterface{

    for (int i = 0; i < 9; i++) {

        UIImageView *iv = [[UIImageView alloc]initWithFrame:CGRectMake(5 + 105*(i%3), 80 + 105*(i/3), 100100)];

        UIImage *image = [self clipImage:[UIImage imageNamed:@"king1"inRect:CGRectMake(0 + 100*(i%3), 0 + 100*(i/3), 100100)];

        iv.userInteractionEnabled = YES;

        if (i < 8) {

            iv.image = image;

        }

        else{

            iv.backgroundColor = [UIColor whiteColor];

            iv.tag = 200;

        }

        [self.view addSubview:iv];

        [iv release];

    }

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    //获取空白imageview

    UIImageView *whiteIv = (UIImageView *)[self.view viewWithTag:200];

    for (UITouch *touch in touches) {

        //判断触摸的imageview和空白imageview的中心点的距离。如果距离==105 --> 相邻,可以移动(交互位置);否则 --> 不能移动(交换位置)

        if ([touch.view isKindOfClass:[UIImageView class]]) {

            int disX = abs(whiteIv.center.x - touch.view.center.x);

            int disY = abs(whiteIv.center.y - touch.view.center.y);

            if (disX + disY == 105) {

                //交换 --> center / frame

                CGPoint pt = whiteIv.center;

                whiteIv.center = touch.view.center;

                touch.view.center = pt;

            }

        }

    }

}

切割图片

//第一个参数:要进行切割的图片元素

//第二个参数:要切的范围

-(UIImage *)clipImage: (UIImage *)image inRect: (CGRect) rect

{

    //获取父图片要切的位置

    CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, rect);

    //用子图片来接收切割出来的图片

    UIImage *subImage = [UIImage imageWithCGImage:imageRef];

    return subImage;

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值