美文网首页
UITableViewCell重写drawRect的问题

UITableViewCell重写drawRect的问题

作者: 绘色 | 来源:发表于2020-04-23 11:58 被阅读0次

    遇到问题

    设计为了美观,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的问题

          本文链接:https://www.haomeiwen.com/subject/mjuoihtx.html