drawLayer:inContext不显示绘图

时间:2016-10-11 00:39:28

标签: ios swift cocoa xcode8 draw

我试图在Xcode 8,Swift 3上的 UIView 子类中绘制一个蓝色圆圈。在Cocoa Touch文件中,我用作<的类em>在 Storyboard 中查看对象,我编写了以下代码,但是没有显示圆圈:

import UIKit

class testView: UIView {
    override func draw(_ layer: CALayer, in ctx: CGContext) {
        ctx.addEllipse(in: CGRect(x: 0, y: 0, width: 100, height: 100))
        ctx.setFillColor(UIColor.blue.cgColor)
        ctx.fillPath()
    }
}

此版本UIKit并不显示圆圈:

override func draw(_ layer: CALayer, in ctx: CGContext) {
    UIGraphicsPushContext(ctx)
    let p = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100))
    UIColor.blue.setFill()
    p.fill()
    UIGraphicsPopContext()
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我正在研究你的问题,这是我的结果,首先你需要得到你的CurrentGraphicsContent,如果你不这样做,你就不能画任何东西,所以试试这个代码

override func draw(_ rect: CGRect) {
    super.draw(rect)

    if let ctx = UIGraphicsGetCurrentContext() {
        ctx.setFillColor(UIColor.blue.cgColor)
        ctx.addEllipse(in: CGRect(x: 0, y: 0, width: 100, height: 100))
        ctx.fillPath()

        UIGraphicsEndImageContext()
    }
    // Drawing code
}

我希望这有助于你