这是我的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyChatCell
if(x){
cell.width = 100
} else {
cell.width = 300
}
}
我通过以下代码进行管理:
class MyChatCell: UITableViewCell {
var width: Int = 0
override var frame: CGRect {
get {
return super.frame
}
set (newFrame) {
var frame = newFrame
var newWidth = frame.width
if(width > 0){
newWidth = CGFloat(width)
}
frame.size.width = newWidth
super.frame = frame
}
}
}
此代码有效,但有时在重新加载数据或滚动表时,该单元格行的宽度设置不正确
这是普通视图的示例:
=======一个=======
===两个===
如果我滚动或重新加载数据,则显示在视图下方:
=======一个=======
=======两个=======
答案 0 :(得分:0)
在您的MyChatCell
类中添加此方法:
override func prepareForReuse()
{
super.prepareForReuse()
frame.size.width = 0
}
告诉我是否可行。