如何创建三角形UIImage

sho*_*hoe 2 ios swift

如何创建三角形UIImage?这就是我现在的操作方式,但是它根本不产生任何图像。

extension UIImage {

    static func triangle(side: CGFloat, color: UIColor)->UIImage {
        UIGraphicsBeginImageContextWithOptions(CGSize(width: side, height: side), false, 0)
        let ctx = UIGraphicsGetCurrentContext()!
        ctx.saveGState()

        ctx.beginPath()
        ctx.move(to: CGPoint(x: side / 2, y: 0))
        ctx.move(to: CGPoint(x: side, y: side))
        ctx.move(to: CGPoint(x: 0, y: side))
        ctx.move(to: CGPoint(x: side / 2, y: 0))
        ctx.closePath()

        ctx.setFillColor(color.cgColor)

        ctx.restoreGState()
        let img = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()

        return img
    }
}
Run Code Online (Sandbox Code Playgroud)

OOP*_*Per 5

您的路径没有任何行,因此没有要填充的区域。另外,您没有绘制路径。

尝试这样的事情:

static func triangle(side: CGFloat, color: UIColor)->UIImage {
    UIGraphicsBeginImageContextWithOptions(CGSize(width: side, height: side), false, 0)
    let ctx = UIGraphicsGetCurrentContext()!
    ctx.saveGState()

    ctx.beginPath()
    ctx.move(to: CGPoint(x: side / 2, y: 0))
    //### Add lines
    ctx.addLine(to: CGPoint(x: side, y: side))
    ctx.addLine(to: CGPoint(x: 0, y: side))
    //ctx.addLine(to: CGPoint(x: side / 2, y: 0)) //### path is automatically closed
    ctx.closePath()

    ctx.setFillColor(color.cgColor)

    ctx.drawPath(using: .fill) //### draw the path

    ctx.restoreGState()
    let img = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

    return img
}
Run Code Online (Sandbox Code Playgroud)