代码之家  ›  专栏  ›  技术社区  ›  heinst

UIView shadow太定义了

  •  1
  • heinst  · 技术社区  · 6 年前

    enter image description here

    这就是我的结局。我结合了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)
    

    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;
    

    enter image description here

    如你所见,我的影子比隐身中的定义要明确得多,如果不花几个小时去猜测和检查,我很难找出原因。有人能指点我正确的方向吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Code Different    6 年前

    如果不给视图添加背景色,我就无法获得阴影。不管怎样,以下是我尝试的设置和结果:

    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)
    

    Result

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

    • 使用纯色 shadowColor
    • shadowOpacity
    • 通过控制“硬度” shadowRadius . 半径越小,阴影越难定义。
        2
  •  2
  •   M. Duecker    6 年前

    我绝对建议使用更亮的颜色。你的情况似乎很黑暗。此外,增大半径可能会导致阴影不太明确,因为它显然会扩散到更大的区域。

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

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

    layer.layer.shadowRadius = 4