我试图使用UIBezierPath
绘制一个简单的抛物线形状。我有一个maxPoint
和一个boundingRect
,基于它们来确定抛物线的宽度和伸展程度。
以下是我创建用于绘制抛物线的函数(我在容器视图中绘制抛物线,rect
将是container.bounds
):
func addParabolaWithMax(maxPoint: CGPoint, inRect boundingRect: CGRect) {
let path = UIBezierPath()
let p1 = CGPointMake(1, CGRectGetMaxY(boundingRect)-1)
let p3 = CGPointMake(CGRectGetMaxX(boundingRect)-1, CGRectGetMaxY(boundingRect)-1)
path.moveToPoint(p1)
path.addQuadCurveToPoint(p3, controlPoint: maxPoint)
// Drawing code
...
}
我的问题是,我希望我在函数中传入的
maxPoint
是拱形曲线本身的实际极点。例如,如果我传入(CGRectGetMidX(container.bounds), 0)
,则最大点应该在最上方的中心位置。但是,在使用此特定点的函数时,结果看起来像这样:
那么这里路径到底是什么?或者换句话说,我如何从controlPoint
到达我需要的实际最大点?我尝试在y
值上添加和减去不同的值,基于boundingRect
的高度,但我无法找到正确的组合,因为在具有不同y
值的不同点上,它的行为不同。似乎有一种乘数被添加进去了,我该怎么解决呢?