【问题标题】:Why shadow of a view is created as inner为什么视图的阴影被创建为内部
【发布时间】:2017-08-19 20:02:27
【问题描述】:

我尝试创建视图的标准阴影,我将其创建为 cell.contantView 的子视图,但如果我没有指定 .shadowPath,阴影将应用于视图中的其他项目(视图除外),或者阴影创建为如果我这样做,内在。

cell.cellView.frame = CGRect(x: 0.0, y: 0.0, width: cell.contentView.bounds.width, height: initialCellHeight)

cell.cellView.layer.shadowColor = UIColor.black.cgColor
cell.cellView.layer.shadowRadius = 2
cell.cellView.layer.shadowOffset = CGSize.zero
cell.cellView.layer.shadowOpacity = 1
cell.cellView.layer.masksToBounds = false
cell.cellView.layer.shadowPath = UIBezierPath(rect: cell.cellView.bounds).cgPath

cell.contentView.addSubview(cell.cellView)

请帮忙,我花了一整天的时间试图解决这个问题。

【问题讨论】:

  • 为什么要再次将 cell.cellView 添加为 contentView 的子视图?
  • 您是否已将其他项目添加到您想要拥有阴影或单元格的视图中?
  • 带单元格的阴影非常棘手,因为您无法控制渲染顺序(它们的 z-index)。
  • 1.再次?我不。我在最后只添加了一次......也许我不明白一些东西...... 2.是的,我已经添加了,但我不想它有阴影。 3.我尝试设置zPosition,但它甚至没有影响显示阴影。

标签: ios swift uitableview swift3


【解决方案1】:

^ 您可以添加和 UIView 具有您的单元格的所有子视图

^ 然后在前一个 UIView 下添加另一个 UIView 仅用于 Shadow 例如。阴影层

cell.shadowLayer.layer.masksToBounds = false
cell.shadowLayer.layer.shadowOffset = CGSizeMake(0, 0)
cell.shadowLayer.layer.shadowColor = UIColor.blackColor().CGColor
cell.shadowLayer.layer.shadowOpacity = 0.23
cell.shadowLayer.layer.shadowRadius = 4

【讨论】:

  • 是cell.contantView,不是吗?
  • 我们已经有了主视图——contantView。我还删除了 cell.cellView 中的所有内容(我以为没有设置 shadowPath 和没有视图的内容我会得到正常的阴影),但是视图的阴影完全消失了。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多