2017-10-17 190 views
0

我添加了一個陰影,一個UIView,但得到以下結果:UIView的陰影使用BezierPath大量抵消了陰影

enter image description here

的代碼如下:

mainView.layer.cornerRadius = 8 
mainView.layer.shadowColor = UIColor.black.cgColor 
mainView.layer.shadowOpacity = 0.2 
mainView.layer.shadowRadius = 10 
mainView.clipsToBounds = false 
mainView.backgroundColor = UIColor.blue 
mainView.layer.shadowPath = UIBezierPath(roundedRect: mainView.frame, cornerRadius: 8).cgPath 

鑑於我將shadowPath作爲藍色視圖(mainView)的精確框架,我不明白爲什麼陰影如此偏移。我知道我可以使用shadowOffset屬性修復此問題,但是我試圖使用shadowPath的原因完全取決於而不是,因爲它可能存在一些性能問題。

更新:將mainView.frame固定到mainView.bounds後,陰影適當對齊。然而,陰影似乎仍處於MAINVIEW的頂部(具有上述更強的陰影)略微偏移:

enter image description here

+0

嘗試將mainView.frame更改爲mainView.bounds –

回答

1

注陰影在視圖的座標指定,因此,你應該使用mainView.bounds

mainView.layer.shadowPath = UIBezierPath(roundedRect: mainView.bounds, cornerRadius: 8).cgPath 

換句話說,你想與起源(0, 0)的矩形,不與mainView位置。

+0

沒有意識到它是根據視圖的座標指定的!謝謝。修復後的 – pizza7

+0

,你知道爲什麼陰影可能比UIView更強,比下面更新了我的原始問題(截圖)嗎?我本來期望的是陰影的均勻分佈。 – pizza7

+0

@ pizza7我唯一的想法是你的視線高度增加了。當尺寸改變時你是否更新陰影?例如。在'layoutSubviews'? – Sulthan