ios刮刮卡效果_iOS-仿支付宝刮刮乐效果

本文介绍了如何在iOS应用中实现支付宝刮刮乐效果。主要分为三步:展示刮开后的效果,设置遮挡图片,以及在`touchesMoved`方法中处理刮擦操作。在实际代码实现中,需要注意两个控件的位置对应,并正确处理刮擦事件,更新图片显示。
摘要由CSDN通过智能技术生成

支付宝里有个刮刮乐中奖, 和大街小巷里的类似彩票刮刮乐的效果一样。

一、实现思路

其实很简单的三步:1.  展示刮出来的效果的view: 即刮开后刮刮乐效果展示-显示的文字Label

2. 设置遮挡在外面的Image(被刮的图片)

3. 在touchesMoved方法里面实现操作: 刮开图片获取文字

二、程序实现

虽然思路简单,但是还需要注意:

1. 这两个控件的位置切记要相同!

2. 一定要先创建下面的展示刮出来的效果控件的, 再创建上面的被刮的图片控件!

下面就直接上核心代码!

展示刮开出来的效果:显示的文字 labelUILabel *showLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 274, 145)];

showLabel.center = self.view.center;

showLabel.backgroundColor = [UIColor redColor];

showLabel.textColor = [UIColor yellowColor];

showLabel.text = @"恭喜你中奖了";

showLabel.font = [UIFont systemFontOfSize:30];

showLabel.textAlignment = NSTextAlignmentCenter;

[self.view addSubview:showLabel];

2. 设置遮挡在外面的Image(被刮的图片)UIImageView *scratchedImg = [[UIImageView alloc] initWithFrame:showLabel.frame];

scratchedImg.image = [UIImage imageNamed:@"scratched"];

[self.view addSubview:scratchedImg];

self.scratchedImg = scratchedImg;

3. 在touchesMoved方法里面实现操作- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

// 触摸任意位置

UITouch *touch = touches.anyObject;

// 触摸位置在图片上的坐标

CGPoint cententPoint = [touch locationInView:self.scratchedImg];

// 设置清除点的大小

CGRect  rect = CGRectMake(cententPoint.x, cententPoint.y, 20, 20);

// 默认是去创建一个透明的视图

UIGraphicsBeginImageContextWithOptions(self.scratchedImg.bounds.size, NO, 0);

// 获取上下文(画板)

CGContextRef ref = UIGraphicsGetCurrentContext();

// 把imageView的layer映射到上下文中

[self.scratchedImg.layer renderInContext:ref];

// 清除划过的区域

CGContextClearRect(ref, rect);

// 获取图片

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

// 结束图片的画板, (意味着图片在上下文中消失)

UIGraphicsEndImageContext();

self.scratchedImg.image = image;

}

三、压缩文件截图及运行效果

1、压缩文件截图:

2、运行时的截图

四、其他补充

界面性问题可以根据自己项目需求调整即可, 具体可参考代码, 项目能够直接运行!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值