iOS “刮刮乐”的简单实现

这两天闲来无事,做一个“刮刮乐”的小功能给大家乐一乐。哈哈哈,先来看看效果图:


刮刮乐.gif

这个女朋友奖很简单就可以实现:
1.创建图片上下文。
2.将图片渲染在上下文中。
3.清除手指拖拽的位置。
4.通过上下文生成新的图片。
5.将新的图片添加在UIImageView上,并且关闭上下文。
理论上就这么点东西哈。


#import "ViewController.h"

@interface ViewController ()

// 灰色(将被刮开的图片)
@property (weak, nonatomic) IBOutlet UIImageView *clearImageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 添加Pan手势
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
    
    [self.clearImageView addGestureRecognizer:pan];
}

#pragma mark - 长按事件
-(void)panAction:(UIPanGestureRecognizer *)pan {
    // 获取当前按的点
    CGPoint curPoint = [pan locationInView:self.clearImageView];
    
    // 创建图片上下文
    UIGraphicsBeginImageContext(self.clearImageView.bounds.size);
    // 获取对应的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 将图片渲染在t上下文中
    [self.clearImageView.layer renderInContext:context];
    // 清除手指选中的地方
    CGContextClearRect(context, CGRectMake(curPoint.x - 15, curPoint.y - 15, 30, 30));
    // 通过上下文合成图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    // 结束上下文
    UIGraphicsEndImageContext();
    // 将新的图片添加在视图上
    self.clearImageView.image = image;
}

@end

是不是很简单,这些小功能其实很有意思,喜欢的朋友可以点个赞哈。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,805评论 1 32
  • 鑫山力智造 创造大品牌 山东鑫山力机械设备有限公司专业生产冶金用辊桶 镀锌板 彩钢板 印花板 高分子复合板 及各种...
    鑫山力智造阅读 1,209评论 0 1
  • 敏儿姐阅读 708评论 0 0
  • 中午手忙脚乱,女儿进门时我也刚开火,从冰箱里拿出昨晚切好的菜。灶台高,油总是蹦出来,时不时溅到我的手上,胳膊上,两...
    灵动语文阅读 3,624评论 2 14