【发布时间】:2026-01-22 02:20:08
【问题描述】:
我有一个自定义 UITableViewCell,我使用 drawRect 绘制一个简单的底部边框:
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMaxY(rect))
CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMaxY(rect))
CGContextSetStrokeColorWithColor(context, UIColor(netHex: 0xEFEEF4).CGColor)
CGContextSetLineWidth(context, 2)
CGContextStrokePath(context)
}
这非常有效。但是,当我插入带有动画的行时,所有单元格的边框都会消失,并在插入动画完成时再次出现:
tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: cells.count - 1, inSection: 0)], withRowAnimation: UITableViewRowAnimation.Fade)
知道如何避免这种情况吗?
【问题讨论】:
-
我认为你可以通过额外的子层(具有背景颜色和高度的 CALayer)实现相同的视觉效果,并且完全避免绘制。但这当然不能回答你的问题:)
-
@sage444 如果它是一个可行的替代方案,请将其添加为答案。
-
我们可以在故事板本身的单元格底部有一个 2 像素的简单 uiimageview..并在那里提供一种颜色...这将充当边框。还有,您是否正在调用单元格 setNeedsDisplay.. 以便再次调用 drawRect 方法?
标签: ios swift uitableview swift2