UIView的阴影使用BezierPath大量抵消了阴影
问题描述:
我添加了一个阴影,一个UIView,但得到以下结果:UIView的阴影使用BezierPath大量抵消了阴影
的代码如下:
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的顶部(具有上述更强的阴影)略微偏移:
答
注阴影在视图的坐标指定,因此,你应该使用mainView.bounds
。
mainView.layer.shadowPath = UIBezierPath(roundedRect: mainView.bounds, cornerRadius: 8).cgPath
换句话说,你想与起源(0, 0)
的矩形,不与mainView
位置。
尝试将mainView.frame更改为mainView.bounds –