如何为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
上面的代码写在操场上:这是结果:
最佳答案
问题在于您如何创建UIBezierPath
。您正在使用视图边界的矩形创建它,然后在该矩形内添加一个三角形。因此,它们都被填充了–导致整个视图变成红色。
如果将usesEvenOddFillRule
设置为true
,则最好在路径中查看不需要的矩形的结果:
如果您只想填充三角形,请替换此行:
let path = UIBezierPath(rect: rect)
有了这个:
let path = UIBezierPath()
这将创建一个新的空
UIBezierPath
,您可以添加三角形。关于ios - 在Swift中归档UIBezierPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36992064/