我需要设计一个带有圆角和阴影的卡之类的视图。我有一个容器视图,在内部的另一个视图中,就像我所附加的图像一样。但是,当我为外部容器视图施加角半径时,半径是设置的,除了具有内部视图的区域。如果我将其制作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
我正在为我的问题附上图像。查看图像
您有两个视图,一个超级视图及其子视图,您的目标处于冲突中。
-
一方面,您希望监督的角半径影响其子视图。只有当监督掩盖到其范围时,才会发生这种情况。
-
,另一方面,您希望Supperiew的阴影出现。只有当Supperiew 没有掩码到其边界时,才会发生这种情况。
所以您想要的是逻辑上的不可能。
解决方案很容易。使用三个视图!将阴影制作和剪裁的工作分配在两个视图之间。
-
最外面的视图具有角半径和阴影,并且不会掩盖边界。这是影子制造者。
-
下一个视图是其子视图。它的大小完全相同,并且也具有角半径,并且 dos 掩码到边界。这是快船。
-
下一个视图是内容,子视图的子视图。它将被第二视图掩盖,以便转角半径会影响它。