通過CAShaperLayer把UIView做成鏤空效果

聲明:本來自己搞這篇文章是為了以后開發(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的更多使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 在做公司項(xiàng)目過程中,有時(shí)我們會(huì)遇到一個(gè)視圖中間是鏤空的效果,首先,我們可能想到的是在四周創(chuàng)建一些視圖,中間是空的。...
    Fluent閱讀 2,351評(píng)論 5 7
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,198評(píng)論 4 61
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,522評(píng)論 7 249
  • 今天是我失蹤的第二個(gè)星期的第四天,距離上周一我離開H市已經(jīng)過去了十天,我坐了兩天三夜的火車,讓自己盡可能遠(yuǎn)地離開H...
    寫意小生閱讀 270評(píng)論 0 1
  • 先看幾張圖 使用兩天的感受: 總體來說很好,聲音有點(diǎn)大,和同事filco 87 茶軸的聲音差不多 外觀好看喜歡 現(xiàn)...
    GloryMan閱讀 406評(píng)論 0 0