2017-10-17 160 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