繁体   English   中英

带有阴影和圆角的ContainerView

[英]ContainerView with shadow and rounded edges

我想创建具有阴影和圆角边缘的自定义ContainerView。 这个ContainerView以小矩形的形式放置在另一个UIView的顶部。 在这种特殊情况下,使用CoreGraphics的附加图层和绘图阴影都没有用。

在此输入图像描述

你错了,额外的视图/图层无济于事。

您可以将带圆角的roundedContainer放入另一个roundedContainer ,并在其图层中添加shadowedView 要避免这些白色角落,请确保将背景颜色设置为clear某处。

例:

//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)

我找到了合适的解决方案。 我将阴影投射到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()
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM