uiview - 无法在 ImageView 拉伸(stretch)到其边界的图层上设置cornerRadius和阴影?

标签 uiview core-animation uiimageview calayer roundedcorners-dropshadow

这让我很难过。我有一个 UIView(称之为“父级”)。该 View 的最底部 subview 是 UIImageView(称为“子”),其框架占据了整个“父”边界。

我想在“父” View 上圆角,并设置一个阴影。我在 CALayer 上执行此操作像往常一样的“ parent ”:

[[parent layer] setShadowOffset:CGSizeMake(5, 5)];
[[parent layer] setShadowRadius:6];
[[parent layer] setShadowOpacity:0.4];    
[[parent layer] setCornerRadius:6];

这会正确显示阴影,但不会圆角。

这是踢球者:
  • 如果我删除“子” ImageView ,或将其缩小以使其不占据“父” View 的整个边界,我会在父 View 上正确获得圆角和阴影。
  • 如果我不理会“ child ”但在“父” View 上设置“clipsToBounds”,我会正确地得到角落。但现在影子不见了。
  • 在 child 的图层上设置圆角半径似乎也没有效果。

  • 似乎“子” ImageView 只是遮盖了“父” View 上的圆角,因为它占据了整个矩形,并且基于父 View 的剪辑得到了角落,但也掩盖了阴影。不知道为什么#3 不起作用。

    我错过了什么?我是否因为盯着这个太久而忽略了一些明显的东西?

    谢谢。

    (令人震惊的是,标签“roundedcorners-dropshadow”已经存在。太棒了。)

    最佳答案

    您将需要两个嵌套 View ,内部一个设置圆角并裁剪到边界,外部 View 具有阴影(因此不裁剪)。在您的情况下,内部和外部 View 可能是“子”和“父”,但我猜您没有为这些 View 设置正确的裁剪值?

    请参阅 Why masksToBounds = YES prevents CALayer shadow? 中的答案.

    关于uiview - 无法在 ImageView 拉伸(stretch)到其边界的图层上设置cornerRadius和阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3705687/

    相关文章:

    objective-c - iOS 上的快速模糊

    ios - 加载 UIImageView 到 UITableViewCell 附属 View

    swift - 如何向 UIView 实例的 subview 添加约束而不导致应用程序崩溃?

    ios - 我怎样才能用来自底部而不是顶部的原点来设置 CALayer 的高度动画?

    swift - CALayer、CAConstraint 和禁用动画

    macos - CABasicAnimation 过于冗长

    ios - 使用 UIPanGestureRecognizer 和旋转的 Tinder 类动画

    ios - 为什么在使用 TextKit 呈现文本时第二行最终会比第一行短?

    swift - 设置 `constraint.isActive = false` 是否解除约束?

    ios - 将 UIViewController View 属性设置为没有 Storyboard/ Nib 的自定义 UIView 类