遇到问题
设计为了美观,Cell上有一个小的三角形,本来就是想着,直接在cell上画图就完事了,但画完以后,一直不显示。使用UIBezierPath
和UIGraphicsGetCurrentContext
画都不显示,这就让人有点头秃了兄弟
探索
因为drawRect
是在继承于UIView
的UITableViewCell
层面进行绘制的,但TableViewCell
有一个内容视图contentView
,这里就是因为contentView.alpha
不是0导致遮挡住了绘制在cell上的东西。
解决
我的解决方式,就是采用上面链接里面的那种方式,自定义视图覆盖在contentView
上,在自定义视图上面进行绘制。
class CustomView : UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .white
}
override func draw(_ rect: CGRect) {
super.draw(rect)
guard let context = UIGraphicsGetCurrentContext() else {
return
}
context.setLineWidth(1)
context.setAlpha(1)
context.move(to: CGPoint(x: 32, y: 5))
context.addLine(to: CGPoint(x: 29, y : 10))
context.addLine(to: CGPoint(x: 35, y : 10))
context.closePath()
context.setFillColor(UIColor.hexStringToColor("f5f5f5").cgColor)
context.fillPath()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
}
网友评论