Ios 带有阴影和圆边的ContainerView
我想创建带有阴影和圆形边缘的自定义ContainerView。此ContainerView以小矩形的形式放置在另一个UIView的顶部。在这种特殊情况下,使用CoreGraphics添加图层或绘制阴影都没有帮助Ios 带有阴影和圆边的ContainerView,ios,swift,uiview,uicontainerview,dropshadow,Ios,Swift,Uiview,Uicontainerview,Dropshadow,我想创建带有阴影和圆形边缘的自定义ContainerView。此ContainerView以小矩形的形式放置在另一个UIView的顶部。在这种特殊情况下,使用CoreGraphics添加图层或绘制阴影都没有帮助 你错了,额外的视图/图层没有帮助 您可以将带有圆角的roundedContainer放置到另一个shadowedView中,并将阴影添加到其图层中。 为了避免这些白色角落,请确保将“背景色”设置为“清除” 例如: //superview for container with rounde
你错了,额外的视图/图层没有帮助 您可以将带有圆角的
roundedContainer
放置到另一个shadowedView
中,并将阴影添加到其图层中。
为了避免这些白色角落,请确保将“背景色”设置为“清除”
例如:
//superview for container with rounded corners
shadowedView.backgroundColor = UIColor.clear //this will fix your white corners issue
shadowedView.layer.shadowColor = UIColor.black.cgColor
shadowedView.layer.shadowOffset = .zero
shadowedView.layer.shadowOpacity = 0.3
shadowedView.layer.shadowRadius = 5.0
//add a container with rounded corners
let roundedView = UIView()
roundedView.frame = baseView.bounds
roundedView.layer.cornerRadius = 10
roundedView.layer.masksToBounds = true
shadowedView.addSubview(roundedView)
我找到了一个合适的解决办法。我将shadow添加到
ContainerView
,这是每个UIView
内部的一个超类。然后,我使用UIViewController
类对这个小矩形区域进行圆角处理
class GraphViewController: UIViewController {
@IBOutlet var graphView: GraphViewRenderer!
override func viewDidLoad() {
graphView.layer.cornerRadius = 20.0
graphView.layer.masksToBounds = true
super.viewDidLoad()
}
}
class GraphContainerView: UIView {
func applyPlainShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize.zero
layer.shadowRadius = 5.0
layer.shadowOpacity = 0.7
}
override init(frame: CGRect) {
super.init(frame: frame)
applyPlainShadow()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
applyPlainShadow()
}
}
为什么你认为额外的视图/图层没有帮助?您的问题是,在将
cornerRadius
应用于containerView
后,您看不到阴影吗?每次我应用其他视图/层时,阴影都是可见的,边缘都是圆形的,但我无法摆脱此“白色”区域。您应该发布代码以获得帮助。您是否尝试过设置containerView.layer.masksToBounds=true
?它不是超级类,而是超级视图。那不一样。你的答案基本上就是我的建议。谢谢@alexburtnik的帮助。