视图无法绕过

时间:2017-11-25 13:42:46

标签: ios iphone swift ipad

我需要设计一个带圆角和阴影的卡片视图。我有一个容器视图,里面有另一个视图,就像我附加的图像一样。但是当我为外部容器应用角半径时,除了具有内部视图的区域之外,半径将被设置。如果我正在制作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

1 个答案:

答案 0 :(得分:0)

您有两个观点,即超级视图及其子视图,您的目标存在冲突。

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

  • 另一方面,您希望显示superview的阴影。只有当superview 掩盖其边界时才会发生这种情况。

所以你想要的是合乎逻辑的不可能性。

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

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

  • 下一个视图是其子视图。它的大小完全相同,具有角半径, 掩盖到边界。这是限幅器。

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