gpt4 book ai didi

ios - 当单元格超出屏幕时,多次调用 UITableView

转载 作者:行者123 更新时间:2023-11-28 09:39:59 24 4
gpt4 key购买 nike

我在使用函数 tableView 时遇到问题。我给你看我的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cardCell", for: indexPath) as! OpsCardCell
cell.workTest(drawCard: .selectOpponent)
return cell
}

在示例中,我有 4 个单元格,当我在模拟器中滚动屏幕外的单元格并返回时,再次调用该单元格。而且由于我是动态绘制卡片的,所以卡片被绘制了好几次,我添加的阴影也太多次了。我给你看之前和之后的屏幕:

几次向下滚动和向上滚动后:

这是因为函数 tableView 多次调用单元格 [0][3]这是我抽卡的代码:

func drawBasiqCard(){
let cardView = UIView()
self.addSubview(cardView)
cardView.frame = CGRect(marginCardWidth,
marginCardHeight,
self.bounds.size.width - (marginCardWidth*2),
self.bounds.size.height - (marginCardHeight*2))
cardView.layer.cornerRadius = 10
let rounding = CGFloat.init(10)
let shadowLayer = CAShapeLayer.init()
shadowLayer.path = UIBezierPath.init(roundedRect: cardView.bounds, cornerRadius: rounding).cgPath
shadowLayer.fillColor = UIColor(rgb: 0xaaccbb).cgColor
shadowLayer.shadowPath = shadowLayer.path
shadowLayer.shadowColor = UIColor.black.cgColor
shadowLayer.shadowRadius = 5
shadowLayer.shadowOpacity = 0.2
shadowLayer.shadowOffset = CGSize.init(width: 0, height: 0)
cardView.layer.insertSublayer(shadowLayer, at: 0)
}

所以我的问题是,我的代码有什么问题?还有另一种方法可以解决我的问题吗?

感谢您的回复!

最佳答案

您应该尝试在 awakefromnib 方法中一次添加子层。 Tableviewcell 使用单元格标识符重用相同的单元格,这就是多个阴影添加到单元格的原因。

关于ios - 当单元格超出屏幕时,多次调用 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51455566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com