我创建了一个非常简单的tableView,它有一个独特的单元格样式,在这个单元格中,我有一个模拟卡片的视图,我应用阴影来突出光线,当我滚动表格时,阴影是正确渲染的,但是当我向下滚动时,阴影渲染得很差。
这是我的扩展 UIView 我用来涂抹阴影的
func applyShadow(color: UIColor = .black, opacity: Float = 0.1) {
layer.masksToBounds = false
layer.shadowColor = color.cgColor
layer.shadowOpacity = opacity
layer.shadowRadius = 10
layer.shadowOffset = CGSize(width: 0, height: 30)
layer.shouldRasterize = true
}
下面是我如何将上述方法应用到我的 "卡片 "视图中的tableviewcell上
override func layoutSubviews() {
super.layoutSubviews()
cardContainer.applyShadow()
}
下面是这个单元格在tableview中的实例化过程。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "\(HomeCardViewCell.self)", for: indexPath)
return cell
}
我已经覆盖了 prepareForReuse
方法,但没有成功......
override func prepareForReuse() {
super.prepareForReuse()
clipsToBounds = false
contentView.clipsToBounds = false
}
如果我不滚动表格视图或向上滚动,它就会正确地呈现。
如果我向上滚动,然后返回,就会出现糟糕的渲染效果。