iOS 实现扫码时周边模糊中间清晰的效果

来源:互联网 发布:郁可唯 独家记忆 知乎 编辑:程序博客网 时间:2024/05/08 17:07

最近做的项目中有一个扫描二维码的功能,想做成类似微信扫一扫的效果,周边模糊中间清晰的效果,实现过程如下:

创建一个继承自UIView的视图类,当前视图背景设置为透明,在 - (void)drawRect:(CGRect)rect 里绘图。

实现代码如下:

- (instancetype)initWithFrame:(CGRect)frame{

    self = [superinitWithFrame:frame];

    if (self) {

        self.backgroundColor = [UIColorclearColor];

        self.opaque =NO; // 设置为透明的

    }

    return self;

}


// 在接收者视图中绘制矩形

- (void)drawRect:(CGRect)rect {


    [[UIColor colorWithWhite:0alpha:0.5]setFill]; // 设置颜色为黑色

    // 半透明区域

    UIRectFill(rect);  // 向当前绘图环境所创建的内存中的图片上填充一个矩形

    // 透明区域

    CGRect clearRect =CGRectMake(60,80, MSW -120, MSW -120);

    // 两个视图相交的区域

    CGRect clearIntersection =CGRectIntersection(clearRect, rect);

    // 相交的区域设置为透明

    [[UIColor clearColor]setFill];

    // 把透明视图填充在图片上

    UIRectFill(clearIntersection);

    

}


然后把这个视图类创建,就能得到中间透明,周边模糊的效果。

0 0
原创粉丝点击