带有阴影和圆角的ContainerView

时间:2016-11-01 19:36:54

标签: ios swift uiview uicontainerview dropshadow

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

enter image description here

2 个答案:

答案 0 :(得分:4)

您错误地认为其他观看次序/图层无法提供帮助。

您可以将带有圆角的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) ,并将阴影添加到其中。 为避免出现这些白角,请确保将背景颜色设置为某处{{1}}。

示例:

{{1}}

答案 1 :(得分:0)

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