Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带有阴影和圆边的ContainerView_Ios_Swift_Uiview_Uicontainerview_Dropshadow - Fatal编程技术网

Ios 带有阴影和圆边的ContainerView

Ios 带有阴影和圆边的ContainerView,ios,swift,uiview,uicontainerview,dropshadow,Ios,Swift,Uiview,Uicontainerview,Dropshadow,我想创建带有阴影和圆形边缘的自定义ContainerView。此ContainerView以小矩形的形式放置在另一个UIView的顶部。在这种特殊情况下,使用CoreGraphics添加图层或绘制阴影都没有帮助 你错了,额外的视图/图层没有帮助 您可以将带有圆角的roundedContainer放置到另一个shadowedView中,并将阴影添加到其图层中。 为了避免这些白色角落,请确保将“背景色”设置为“清除” 例如: //superview for container with rounde

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


你错了,额外的视图/图层没有帮助

您可以将带有圆角的
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的帮助。