我需要设计一个带圆角和阴影的卡片视图。我有一个容器视图,里面有另一个视图,就像我附加的图像一样。但是当我为外部容器应用角半径时,除了具有内部视图的区域之外,半径将被设置。如果我正在制作clipToBounds = 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
我正在附上下面的图片,以解决我的问题。 View Image
答案 0 :(得分:0)
您有两个观点,即超级视图及其子视图,您的目标存在冲突。
一方面,您希望超视图的圆角半径影响其子视图。只有当superview屏蔽其边界时才会发生这种情况。
另一方面,您希望显示superview的阴影。只有当superview 不掩盖其边界时才会发生这种情况。
所以你想要的是合乎逻辑的不可能性。
解决方案很简单。使用三个视图!在两个视图之间划分阴影制作和裁剪的工作。
最外面的视图具有角半径和阴影,并且不会屏蔽边界。这是影子制造者。
下一个视图是其子视图。它的大小完全相同,也具有角半径, 掩盖到边界。这是限幅器。
下一个视图是内容,子视图的子视图。它将被第二个视图遮盖,因此角半径将影响它。