ios開發之--爲父view上的子view添加陰影

項目中碰到一個問題,在tableview的headerview裏面有很一個子view,設計師的要求是在下方添加一個陰影,效果以下:spa

之前的實現思路就是,代碼以下:設計

添加陰影 
調用視圖的 layercode

CALayer *layer = [imageView layer];  
layer.shadowOffset = CGSizeMake(0, 3); //(0,0)時是四周都有陰影
layer.shadowRadius = 5.0;  
layer.shadowColor = [UIColor blackColor].CGColor;  
layer.shadowOpacity = 0.5;

設置單邊陰影,代碼以下:blog

向左偏移10 (-100)
向右偏移10 (100)
向上偏移10 (0,-10)
向下偏移10 (010

可是效果不是特別理想,能夠用貝塞爾曲線進行設置,可是沒起到做用,還沒找到緣由,還有就是一個坑,就是給子view添加陰影,前面我正常寫陰影竟然沒有出現,ip

先看下成功實現的代碼:ci

self.headerView.showView.layer.shadowColor = KPublickColor.CGColor;
    
    self.headerView.layer.shadowOffset = CGSizeMake(0, 10);
    
    self.headerView.layer.shadowOpacity = 0.4;
    
    self.headerView.layer.shadowRadius = 5.0;
    
    self.headerView.layer.cornerRadius = 5.0;
    
    self.headerView.bgView.clipsToBounds = NO;

這樣的話,陰影是能夠成功設置的,it

沒有成功,分析緣由:由於代碼中設置了masksToBounds屬性爲YES了,將後面設置的陰影效果給裁剪掉了,因此咱們看不到陰影效果,若是咱們將masksToBounds屬性爲NO了,這樣就會失去圓角效果(儘管會出現陰影效果),因此須要向一個一箭雙鵰的辦法來解決這個問題。table

給View添加一個父視圖,在父視圖上添加陰影效果就好,這樣就不會對imageView的圓角形成影響了。class

說明:cli

clipsToBounds

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

masksToBounds

倒是指視圖的圖層上的子圖層,若是超出父圖層的部分就截取掉

 

 

可是,仍是不美觀,能夠在目標view的下方,初始化一個view,然是設置陰影半徑,Y座標向上偏移view的高度+陰影的半徑,而後就能夠實現了!

如圖:

僅作記錄!

相關文章
相關標籤/搜索