【问题标题】:UIView shadow too definedUIView 阴影太定义
【发布时间】:2018-08-23 16:01:07
【问题描述】:

我正在尝试像这样在 UIView 上制作阴影

这就是我最终的结果。我结合了 Invision 给我的东西

let layer = UIView(frame: CGRect(x: 8, y: 454, width: 359, height: 100))
layer.layer.shadowOffset = CGSize(width: 0, height: 2)
layer.layer.shadowColor = UIColor(red:0, green:0, blue:0, alpha:0.08).cgColor
layer.layer.shadowOpacity = 1
layer.layer.shadowRadius = 4
self.view.addSubview(layer)

还有一些我在浏览 StackOverflow 时发现的其他代码

Layer.ShadowRadius = 2.0f;
Layer.ShadowColor = UIColor.FromRGBA(0.00f, 0.00f, 0.00f, 0.08f).CGColor;
Layer.ShadowOffset = new CGSize(2, 2);
Layer.ShadowOpacity = 0.80f;
Layer.ShadowPath = UIBezierPath.FromRect(Layer.Bounds).CGPath;
Layer.MasksToBounds = false;

如您所见,我的影子比 invision 中的影子更明确,我无法在不花费数小时猜测和检查的情况下找出原因。谁能指出我正确的方向?

【问题讨论】:

  • 颜色较浅,半径较大,y 偏移量稍大。
  • 同样使用完全不透明的颜色并在图层中设置shadowOpacity 值。

标签: ios swift shadow


【解决方案1】:

我绝对会推荐使用更亮的颜色。在你的情况下,它似乎很暗。此外,增加半径可能会导致阴影不太明确,因为它显然会分布在更大的区域上。

要使颜色变亮,只需在此处增加所有三个 rgb 值。如果你想要一个非常浅的阴影,我建议将 rgb 通道设置为 200 左右。(255 产生白色)

layer.layer.shadowColor = UIColor(red:0, green:0, blue:0, alpha:0.08).cgColor

你可以在这里增加半径。

layer.layer.shadowRadius = 4

【讨论】:

  • 嘿,你应该建议OP应该改变什么值。
  • @LinusGeffarth 我建议只使用这些值,因为每个人的偏好都不同。即使将 rgb 通道设置为 180-200 左右也是一个好的开始。这将产生一个非常轻的阴影。
  • 然后将该建议准确地放入您的答案中。
【解决方案2】:

如果不向视图添加背景颜色,我无法获得阴影。无论如何,这是我尝试的设置和结果:

let view = UIView(frame: CGRect(x: 8, y: 454, width: 359, height: 100))
view.backgroundColor = .white
view.layer.shadowOffset = CGSize(width: 0, height: 5)
view.layer.shadowColor = UIColor.black.cgColor
view.layer.shadowOpacity = 0.1
view.layer.shadowRadius = 5

self.view.addSubview(view)

以下是您需要考虑的设置:

  • shadowColor 使用纯色
  • 通过shadowOpacity调整亮度
  • 通过shadowRadius 控制“硬度”。半径越小,阴影越硬或越清晰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多