在Swift中提交UIBezierPath

时间:2016-05-02 21:35:30

标签: ios swift

如何为UIBezier路径的内部着色?我正在制作一个简单的三角形,并希望在红色三角形内部着色。

class GraphView : UIView {

    override func drawRect(rect: CGRect) {

       UIColor.redColor().setFill()
        UIColor.greenColor().setStroke()

        let path = UIBezierPath(rect: rect)
        path.moveToPoint(CGPointMake(100,620))
        path.addLineToPoint(CGPointMake(300,100))
        path.addLineToPoint(CGPointMake(500,620))
        path.addLineToPoint(CGPointMake(100,620))

        path.closePath()

        path.fill()
        path.stroke()

    }

}


let graphView = GraphView(frame: CGRectMake(0,0,960,640))
XCPlaygroundPage.currentPage.liveView = graphView

以上代码是在操场上写的:结果如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

问题在于您如何创建UIBezierPath。您可以使用视图边界的矩形创建它,然后在该矩形内添加一个三角形。因此,它们都会被填满 - 导致整个视图变红。

如果您将usesEvenOddFillRule设置为true,您最好在路径中看到不需要的矩形的结果:

enter image description here

如果您只想填充三角形,请替换此行:

let path = UIBezierPath(rect: rect)

用这个:

let path = UIBezierPath()

这将创建一个新的 UIBezierPath,您可以将三角形添加到。