【发布时间】:2019-11-21 00:10:33
【问题描述】:
我正在尝试使我的表格视图单元格看起来“有材料”。这是类似于我想做的事情(source):
请注意,上图中整个表格视图周围有一个阴影。我想要的是那个阴影,但应用于每个表格视图单元格,而不是整个表格视图。
我首先在 XIB 文件中设计了我的单元格。我将一个名为containerView 的UIView 作为内容视图的子视图。我添加了约束,使containerView 的上、下、左、右边距为 8。这是为了使containerView 比内容视图小一点,这样我放在它上面的阴影就会可见.
我还添加了一个名为label 的UILabel 作为containerView 的子视图以显示一些文本。
这是UITableViewCell 子类:
class QueueItemCell: UITableViewCell {
@IBOutlet var label: UILabel!
@IBOutlet var container: UIView!
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
...
}
override func setSelected(_ selected: Bool, animated: Bool) {
...
}
override func awakeFromNib() {
container.layer.shadowColor = UIColor.black.cgColor
container.layer.shadowOpacity = 0.7
container.layer.shadowOffset = CGSize(width: 3, height: 9)
container.layer.shadowRadius = 4
container.layer.cornerRadius = 4
container.layer.shadowPath = UIBezierPath(roundedRect: container.bounds, cornerRadius: 4).cgPath
selectionStyle = .none
}
}
数据源和委托方法没有什么特别之处,只是我在heightForRowAt中将单元格的高度设置为61。
当我运行应用程序时,我得到了这样的结果:
底部和左侧边缘的阴影非常好。但右边缘是一场彻头彻尾的灾难。顶部边缘也没有阴影,这是不希望的。我尝试对shadowPath 和shadowOffset 进行反复试验,但总有一两个边缘看起来很糟糕。
如何在单元格的所有边缘实现阴影,如第一张图片所示?
【问题讨论】:
-
我认为添加简单阴影不需要阴影路径。