給UIView添加陰影,卻在子view中生效了

前要

之前使用UItableViewcell中添加的UiView的設置陰影,但是陰影卻在子View的控件上生效了,一直沒有找到什麼原因,之前也是用的是同樣的方法

contentView_bg.layer.shadowOffset = CGSizeMake(0, 0);//shadowOffset陰影偏移,x向右偏移,y向下偏移
contentView_bg.layer.shadowColor = [LYTool colorWithHexString:@"#DBDBDB"].CGColor;
contentView_bg.layer.shadowOpacity = 1;//陰影透明度,默認0
contentView_bg.layer.shadowRadius = 4;

一個最基本的設置陰影的方法普通的不能再普通了,但是就是顯示不出來。

結果以及原因分析

一切的原因僅僅是contentView_bg.backgroundColor = [UIColor whiteColor];這句話的原因,只是沒有設置背景的顏色,但是也不能設置背景的顏色是透明的也不行。也就是說 不能contentView_bg.backgroundColor = [UIColor clearColor];這樣的話陰影也是顯示不出來的,UIView沒有設置背景顏色話,就是默認的透明的,所以陰影就是一直顯示不出來的原因找到了,但是爲什麼會傳遞了子的UIView的控件這個很費勁。以後知道原因再來回復這個問題。實現正確的方法就是

//背景框
        UIView *contentView_bg = [[UIView alloc] initWithFrame:CGRectMake(KPT_SCAlE(14), 2, SCREEN_WIDTH- KPT_SCAlE(28), KPT_SCAlE(245))];
        contentView_bg.layer.shadowOffset = CGSizeMake(0, 0);//shadowOffset陰影偏移,x向右偏移,y向下偏移
        contentView_bg.layer.shadowColor = [LYTool colorWithHexString:@"#DBDBDB"].CGColor;
        contentView_bg.layer.shadowOpacity = 1;//陰影透明度,默認0
        contentView_bg.layer.shadowRadius = 4;
        [self.contentView addSubview:contentView_bg];
        contentView_bg.layer.cornerRadius = KPT_SCAlE(10);
//        contentView_bg.clipsToBounds = YES;
        _contentView_bg = contentView_bg;
        contentView_bg.backgroundColor = [UIColor clearColor];

還有就是小竅門,設置又有圓角又有陰影的話就不要執行contentView_bg.clipsToBounds = YES;的方法了,這個方法是切掉多餘的部分,如果執行了這個方法,陰影效果就沒有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章