添加阴影到子视图干扰父视图(iOS swift)

yizd12fk  于 2023-05-05  发布在  Swift
关注(0)|答案(1)|浏览(145)

有什么办法可以达到这种阴影效果吗?此屏幕来自我正在使用的Android应用程序Swift(iOS)enter image description here
我注意到我有两个视图,当我给它们添加阴影时,它们会相互干扰,变得更暗

zzlelutf

zzlelutf1#

实现这一点的技巧是在中间放置另一个视图,该视图剪辑顶视图的内容。检查以下代码:

let bottomShadowView = UIView(frame: CGRect(x: 100.0, y: 100.0, width: 200.0, height: 100.0))
bottomShadowView.backgroundColor = .white
bottomShadowView.layer.cornerRadius = 20.0
bottomShadowView.layer.shadowColor = UIColor.black.cgColor
bottomShadowView.layer.shadowOpacity = 0.2
bottomShadowView.layer.shadowRadius = 8
view.addSubview(bottomShadowView)

let bottomClipView = UIView(frame: bottomShadowView.bounds)
bottomClipView.layer.cornerRadius = bottomShadowView.layer.cornerRadius
bottomClipView.clipsToBounds = true
bottomShadowView.addSubview(bottomClipView)

let topShadowView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 200.0, height: 50.0))
topShadowView.backgroundColor = .white
topShadowView.layer.cornerRadius = 20.0
topShadowView.layer.shadowColor = UIColor.black.cgColor
topShadowView.layer.shadowOpacity = 0.2
topShadowView.layer.shadowRadius = 8
bottomClipView.addSubview(topShadowView)

请注意,您可以在接口构建器中完成大部分工作,但代码应该能给予您更好地理解正在发生的事情。
bottomClipView需要与父阴影视图具有相同的大小,并具有相同的特征,例如拐角半径。然后简单地应用clipsToBounds,这样你在这个视图上放置的任何东西都不会画出它的边界,也不会干扰阴影。

相关问题