UITableViewCell重写drawRect的问题

遇到问题

设计为了美观,Cell上有一个小的三角形,本来就是想着,直接在cell上画图就完事了,但画完以后,一直不显示。使用UIBezierPathUIGraphicsGetCurrentContext画都不显示,这就让人有点头秃了兄弟

探索

一通度娘之后,在这里发现了点东西

因为drawRect是在继承于UIViewUITableViewCell层面进行绘制的,但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)
    }
}

你可能感兴趣的:(UITableViewCell重写drawRect的问题)