Ios 景色不好

Ios 景色不好,ios,iphone,swift,ipad,Ios,Iphone,Swift,Ipad,我需要设计一个具有圆角和阴影的视图卡。我有一个容器视图,里面有另一个视图,就像我附加的图像一样。但是,当我为外部容器应用角半径时,除了具有内部视图的区域外,半径已设置。如果我把它设为cliptobunds=true,那么它会到处转圈,但阴影不会出现。请帮帮我 这是我的密码 containerView.layer.masksToBounds = false containerView.layer.shadowColor = UIColor.black.cgColor con

我需要设计一个具有圆角和阴影的视图卡。我有一个容器视图,里面有另一个视图,就像我附加的图像一样。但是,当我为外部容器应用角半径时,除了具有内部视图的区域外,半径已设置。如果我把它设为cliptobunds=true,那么它会到处转圈,但阴影不会出现。请帮帮我

这是我的密码

    containerView.layer.masksToBounds = false
    containerView.layer.shadowColor = UIColor.black.cgColor
    containerView.layer.shadowOpacity = 0.5
    containerView.layer.shadowOffset = CGSize(width: -1, height: 1)
    containerView.layer.shadowRadius = 5
    containerView.backgroundColor = UIColor.white
    containerView.layer.cornerRadius = 20

我附上下面的图片为我的问题

您有两个视图,一个超级视图和它的子视图,并且您的目标是冲突的

  • 一方面,您希望超级视图的角半径影响其子视图。只有当superview遮罩到其边界时,才会发生这种情况

  • 另一方面,您希望超级视图的阴影出现。只有当superview不遮罩其边界时,才会发生这种情况

所以你想要的是逻辑上的不可能

解决办法很简单。使用三个视图!在两个视图之间划分阴影制作和剪裁工作

  • 最外面的视图具有角半径和阴影,并且不遮罩边界。这是影子制造者

  • 下一个视图是它的子视图。它的大小完全相同,并且它还有一个角半径,并且它会屏蔽边界。这是克利伯号

  • 下一个视图是内容,即子视图的子视图。它将被第二个视图遮罩,因此角半径将影响它


您可以分享一些代码,甚至是您的代码所在的回购协议吗?我已经在上面添加了我的代码。提前谢谢