iOS 在圓角視圖上添加陰影

陰影其實(shí)就是在視圖之外添加了一層類似遮罩的圖層 所以只要是設(shè)置了layer.masksToBounds的視圖都是無法直接顯示陰影的 需要另外添加一層視圖才開可以顯示 效果如下



下面來講實(shí)現(xiàn)

第一步 添加兩個(gè)視圖 一個(gè)需要設(shè)置圓角的視圖(以下用headBtn稱呼)一個(gè)用于添加陰影的視圖(以下用headBtnShadowView稱呼)

注意

  • headBtnShadowView最好是與headBtn寬高相同 并且顏色設(shè)為clearColor
  • headBtn是作為子視圖添加到headBtnShadowView上的
  • 只在headBtn上進(jìn)行圓角相關(guān)設(shè)置
  • 千萬不要設(shè)置 headBtnShadowView的layer.masksToBounds

第二步 設(shè)置陰影

- (void)setHeadBtnShadow{
    
    _headBtnShadowView.layer.shadowOpacity = 0.6;//0-1 0就完全看不見越接近1陰影越實(shí)
    _headBtnShadowView.layer.shadowColor = COLORMAINBLUE.CGColor;//陰影顏色
    _headBtnShadowView.layer.shadowOffset = CGSizeMake(0, 3);
    //偏移量 寬度表示橫坐標(biāo)偏移量 高度表示縱坐標(biāo)偏移量 這里是橫坐標(biāo)不變 縱坐標(biāo)向下偏移3
    _headBtnShadowView.layer.shadowRadius = 4; 
    //該數(shù)值越大陰影擴(kuò)散的越遠(yuǎn)
    
    //畫出圓形陰影
    CGMutablePathRef circlePath = CGPathCreateMutable();
    CGPathAddEllipseInRect(circlePath, NULL, self.headBtn.bounds);
    self.headBtnShadowView.layer.shadowPath = circlePath;
    CGPathRelease(circlePath);
    

    /**
    //畫方形陰影
    CGMutablePathRef squarePath = CGPathCreateMutable();
    CGPathAddRect(squarePath, NULL, self.headBtn.bounds);
    self.headBtnShadowView.layer.shadowPath = squarePath; 
    CGPathRelease(squarePath);
    */
    //更復(fù)雜的圖形需要用UIBezierPath來畫
}

參考鏈接:http://www.cocoachina.com/ios/20150104/10816.html

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

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

  • 轉(zhuǎn)載:http://www.lxweimin.com/p/32fcadd12108 每個(gè)UIView有一個(gè)伙伴稱為l...
    F麥子閱讀 6,321評論 0 13
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺ios動(dòng)畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,573評論 6 30
  • 每個(gè)UIView有一個(gè)伙伴稱為layer,一個(gè)CALayer。UIView實(shí)際上并沒有把自己畫到屏幕上;它繪制本身...
    shenzhenboy閱讀 3,160評論 0 17
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫全貌。在這里你可以看...
    F麥子閱讀 5,147評論 5 13
  • Core Animation其實(shí)是一個(gè)令人誤解的命名。你可能認(rèn)為它只是用來做動(dòng)畫的,但實(shí)際上它是從一個(gè)叫做Laye...
    小貓仔閱讀 3,803評論 1 4