iOS 給一個(gè)設(shè)置過(guò)圓角的View添加陰影效果

最近在項(xiàng)目中遇到要給一個(gè)圓形imgeView的底部增加一圈陰影,剛開(kāi)始這樣寫(xiě)是沒(méi)有出現(xiàn)陰影效果的,下面附上代碼:


_imgView.layer.cornerRadius = 75; //設(shè)置imageView的圓角

_imgView.layer.masksToBounds = YES;

_imgView.layer.shadowColor = [UIColor blackColor].CGColor;//設(shè)置陰影的顏色

_imgView.layer.shadowOpacity = 0.8;//設(shè)置陰影的透明度

_imgView.layer.shadowOffset = CGSizeMake(1, 1);//設(shè)置陰影的偏移量

_imgView.layer.shadowRadius = 3;//設(shè)置陰影的圓角

分析原因:因?yàn)榇a中設(shè)置了masksToBounds屬性為YES了,將后面設(shè)置的陰影效果給裁剪掉了,所以我們看不到陰影效果,如果我們將masksToBounds屬性為NO了,這樣就會(huì)失去圓角效果(盡管會(huì)出現(xiàn)陰影效果),所以需要向一個(gè)兩全其美的辦法來(lái)解決這個(gè)問(wèn)題。

給imageView添加一個(gè)父視圖,在父視圖上添加陰影效果就好,這樣就不會(huì)對(duì)imageView的圓角造成影響了。

UIView *shadowView = [[UIView alloc]initWithFrame:_imgView.frame];

[self.view addSubview:shadowView];

shadowView.layer.shadowColor = [UIColor blackColor].CGColor;

shadowView.layer.shadowOffset = CGSizeMake(5, 5);

shadowView.layer.shadowOpacity = 1;

shadowView.layer.shadowRadius = 9.0;

shadowView.layer.cornerRadius = 9.0;

shadowView.clipsToBounds = NO;

[shadowView addSubview:_imgView];

說(shuō)明:

clipsToBounds

是指視圖上的子視圖,如果超出父視圖的部分就截取掉,

masksToBounds

卻是指視圖的圖層上的子圖層,如果超出父圖層的部分就截取掉

最后附上效果圖

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

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

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