iOS CALayer的屬性mask的使用

舉例說明

要實(shí)現(xiàn)的效果:


image.png

實(shí)現(xiàn)思路:

    //add gradient layer to label bg view
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = _labelBgView.bounds;
    //設(shè)置漸變色
    [self setupGradientlayer:gradientLayer];

    //添加漸變色圖層到view容器上
    [_labelBgView.layer addSublayer:gradientLayer];
    
    //add label to label bg view
    UILabel *label = [[UILabel alloc] initWithFrame:_labelBgView.bounds];

    //remember to set the bg color's alpha to 0
    label.backgroundColor = [UIColor clearColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.textColor = [UIColor blueColor];
    label.text = @"天王老子天下無敵";
    label.font = [UIFont systemFontOfSize:30];
    [_labelBgView addSubview:label];

    gradientLayer.mask = label.layer;

分析:
CALayer的mask圖層, 是以透明度為基礎(chǔ)的, 只看透明度, 即如果mask的某一點(diǎn)像素的透明度為1.0, 不透明, 則不進(jìn)行遮罩, 不顯示mask的內(nèi)容;如果mask圖層的某一點(diǎn)像素的透明度為0.0, 完全透明, 則進(jìn)行遮罩, 顯示mask的內(nèi)容, 進(jìn)行遮罩.
漸變層為彩色漸變, 且遮罩圖層與漸變圖層大小一樣, 而label的背景顏色為clearcolor透明度為0.0, 需要進(jìn)行遮罩, 因此背景色每一個(gè)像素需要顯示, 而且把漸變色遮住了, 而文字部分默認(rèn)顏色為黑色, 透明度為1.0, 不需要顯示這部分的遮罩.
綜上所訴, 遮罩圖層達(dá)到的效果類似剪紙鏤空的效果, 正好把文字鏤空了, 因此顯示的是漸變色的效果.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容