有什么办法可以达到这种阴影效果吗?此屏幕来自我正在使用的Android应用程序Swift(iOS)enter image description here我注意到我有两个视图,当我给它们添加阴影时,它们会相互干扰,变得更暗
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,这样你在这个视图上放置的任何东西都不会画出它的边界,也不会干扰阴影。
bottomClipView
clipsToBounds
1条答案
按热度按时间zzlelutf1#
实现这一点的技巧是在中间放置另一个视图,该视图剪辑顶视图的内容。检查以下代码:
请注意,您可以在接口构建器中完成大部分工作,但代码应该能给予您更好地理解正在发生的事情。
bottomClipView
需要与父阴影视图具有相同的大小,并具有相同的特征,例如拐角半径。然后简单地应用clipsToBounds
,这样你在这个视图上放置的任何东西都不会画出它的边界,也不会干扰阴影。