如何为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


上面的代码写在操场上:这是结果:

ios - 在Swift中归档UIBezierPath-LMLPHP

最佳答案

问题在于您如何创建UIBezierPath。您正在使用视图边界的矩形创建它,然后在该矩形内添加一个三角形。因此,它们都被填充了–导致整个视图变成红色。

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

ios - 在Swift中归档UIBezierPath-LMLPHP

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

let path = UIBezierPath(rect: rect)


有了这个:

let path = UIBezierPath()


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

关于ios - 在Swift中归档UIBezierPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36992064/

10-12 20:08