绘制线条在iOS14上不起作用。
我创建了UITableViewCell
的子类。
我想在自定义单元格中画两条线。
代码在下面。
override func draw(_ rect: CGRect) {
super.draw(rect);
guard let context = UIGraphicsGetCurrentContext() else { return }
context.saveGState() // Save state. This includes transformations and clips
context.setLineWidth(7.0)
// let lineColor = UIColor(hex: "FC5622")!
// let bgColor = UIColor(hex: "E8E6EB")!
//
let lineColor = UIColor.red
let bgColor = UIColor.lightGray
context.setStrokeColor(bgColor.cgColor)
context.move(to: CGPoint(x: 76.0, y: 32))
context.addLine(to: CGPoint(x: (76.0 + 120.0), y: 32))
context.setLineCap(.round)
context.strokePath()
context.setLineWidth(7.0)
context.setStrokeColor(lineColor.cgColor)
context.move(to: CGPoint(x: 76.0, y: 32))
context.addLine(to: CGPoint(x: (76.0 + 120.0 * self.lineScale ), y: 32))
context.setLineCap(.round)
context.strokePath()
context.restoreGState() // Put back state. This includes transformations and clips
}
它在iOS 12上运行良好。它在iOS 14上不起作用。(不知道在iOS 13上是否管用)。
我不知道我能做些什么来解决这个问题。
你知道原因吗?你能修好它吗?
您不应该试图重写表格视图单元格的draw(_rect:CGRect)
。单元格有子视图,子视图有子视图,单元格本身做的不仅仅是“存在”。
如果您使用debug View hierarchy
,您就会看到哪里出了问题,这将进一步说明这是个坏主意的原因。
使用IOS14
时,单元格结构发生了变化,您应该只操作单元格的.contentView
,而不是单元格本身。
更好的做法是将其作为一个自定义视图添加到内容视图中。
不应该重写表格单元格的绘图(_rect:CGRect)
。相反,创建一个新的自定义视图并将其添加到单元格的contentView中,然后在其中绘制。
您应该创建UIView
并将其作为contentView属性的子视图添加。关于DrawRect:
和UITableViewCell
,这里和整个web上有很多问题/答案,其中大多数建议您不要这样做。