1. 程式人生 > >ios陰影圓角共存

ios陰影圓角共存

先上圖

 

Simulator Screen Shot - iPhone X - 2018-08-10 at 11.23.45.png

陰影和圓角同時存在
無法共存的主要原因是屬性masksToBounds=YES(檢視的圖層上的子圖層,如果超出父圖層的部分就擷取掉),設定為YES可以有圓角但是沒有陰影,設定為NO有陰影沒有圓角,既然圓角我能給你切走那陰影老夫也能給你切走,所以出現如此尷尬之場景。

解決:

CALayer可以完成檢視上的所有UI操作,那我們把CALayer當成一個檢視加到view上,所以分為兩步實現

1:將需要操作的self.bg_view直接設定為圓角

self.bg_view.layer.cornerRadius = 6;
self.bg_view.layer.masksToBounds = YES;

2:建立CALayer並新增到self.bg_view的父檢視上(放在self.bg_view的下層)

    CALayer *subLayer=[CALayer layer];
    CGRect fixframe = self.bg_view.frame;
    subLayer.frame= fixframe;
    subLayer.cornerRadius=6;
    subLayer.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:0.8].CGColor;
    subLayer.masksToBounds=NO;
    subLayer.shadowColor = [UIColor blackColor].CGColor;//shadowColor陰影顏色
    subLayer.shadowOffset = CGSizeMake(3,2);//shadowOffset陰影偏移,x向右偏移3,y向下偏移2,預設(0, -3),這個跟shadowRadius配合使用
    subLayer.shadowOpacity = 0.8;//陰影透明度,預設0
    subLayer.shadowRadius = 4;//陰影半徑,預設3
    [self.layer insertSublayer:subLayer below:self.bg_view.layer];

 



作者:路有點顛簸
連結:https://www.jianshu.com/p/48b1a601febf
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。