【问题标题】:Why shadow is reflecting on child subviews为什么阴影会反映在子子视图上
【发布时间】:2018-07-03 13:00:40
【问题描述】:

我有一个观点,我正在以编程方式应用阴影。但不幸的是,这个阴影出现在这个特定视图的所有子视图上。任何原因。

    cellView.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor
    cellView.layer.shadowOffset = CGSize(width: 0, height: 2)
    cellView.layer.shadowOpacity = 1.0
    cellView.layer.shadowRadius = 0.0
    cellView.layer.masksToBounds = false
    cellView.layer.cornerRadius = 4.0

    timeLabel = UILabel(frame: CGRect(x: 10, y: 5, width: 50, height: self.bounds.size.height - 30))
    timeLabel.font = AmeyoConstants.smallerFont
    timeLabel.textColor = UIColor.darkGray
    cellView.addSubview(timeLabel)

我只在 cellView 上应用了阴影,但在运行应用程序时,阴影也会自动出现在 timeLabel 上。谁能告诉我从父视图到子视图继承阴影的正确原因。

【问题讨论】:

  • 设置cellView.backgroundColor = UIColor.white。由于颜色清晰,阴影会反射到子视图
  • 你把这段代码放在哪里
  • 仅使用cellView.layer 而不是cellView
  • @Priya:成功了。非常感谢。我用 UIColor.clear 绕过它。
  • 谢谢@priya。它有效。我忘了添加背景颜色。

标签: ios swift uikit shadow


【解决方案1】:

对于有阴影的视图,它必须具有不透明的背景颜色,我们无法从您的 sn-p 中看到,但您是否将背景颜色设置为 cellView

如果不是,那么阴影将不会应用到视图本身,而是应用到其子视图!

如果你想一想,一张透明的纸是没有阴影的(因为它当然是透明的),但是如果你在上面添加不透明的物体,那么这些物体就会有阴影。

现在,如果您希望床单有阴影,那么您应该放一张不透明的床单,对吗?在这种情况下,同样的规则也适用于 iOS!

【讨论】:

  • 理解这个问题的好例子。
  • 尽管我使用的是 SwiftUI,但这个答案救了我!
猜你喜欢
  • 2018-06-24
  • 2015-09-19
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多