iOS开发者进阶iOS 开发

iOS “刮刮乐”的简单实现

2019-05-16  本文已影响49人  枫developer

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


刮刮乐.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

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

上一篇下一篇

猜你喜欢

热点阅读