聲明:本來自己搞這篇文章是為了以后開發(fā)時(shí)自己用的,但是不知道為什么被簡(jiǎn)書推送到專題里面了.這篇文章不是我原創(chuàng)的,是我粘貼別人的.真正是作者是FlyChang.原文傳送門通過CAShaperLayer把UIView做成鏤空效果.
在做公司項(xiàng)目過程中,有時(shí)我們會(huì)遇到一個(gè)視圖中間是鏤空的效果,首先,我們可能想到的是在四周創(chuàng)建一些視圖,中間是空的。那么,我們有沒有簡(jiǎn)單方法呢?下面,就小編給大家介紹一下CAShaperLayer是怎么給UIView做成鏤空效果吧。
話不多說,直接上代碼!
我們?cè)诳刂破饕晥D上加個(gè)view,控制器視圖的顏色是黑色,添加的view顏色是紅色
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
UIView *view = [[UIView alloc]init];
view.frame = self.view.bounds;
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
CGFloat W = self.view.frame.size.width;
CGFloat H = self.view.frame.size.height;
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc]init];
CGMutablePathRef path = CGPathCreateMutable();
// 保留頂部100
CGPathAddRect(path, nil, CGRectMake(0, 0, W, 100));
// 保留底部100
CGPathAddRect(path, nil, CGRectMake(0, H - 100, W, 100));
shapeLayer.path = path;
self.view.layer.mask = shapeLayer
// 之前沒有釋放path,更新一下,注意:在Swift中CGMutablePathRef是class不需要手動(dòng)釋放 CGPathRelease(path);
CGPathRelease(path);
}
運(yùn)行后的效果
鏤空效果圖.png
大家可以看到運(yùn)行后中間是黑色,上下是紅色。
以上是對(duì)CAShapeLayer的簡(jiǎn)單使用,后期會(huì)給大家介紹CAShapeLayer的更多使用。