2014-01-18 131 views
1

通常bezier路径的参数为0 < = t < = 1描述曲线上的某个点。部分贝塞尔曲线与UIBezierPath [ios]

我想要做的是:

我有4个点(开始,结束,2个控制点),现在,我想从t = 0画一条线到t = 0.5。有没有在iOS(原生框架或开源)中做到这一点的标准方法?

如果这是不可能的,我将不得不计算我自己的端点和两个新的控制点。

+0

你只关心绘制路径,或者你需要知道什么是新的控制点会是? –

+0

您可以为任何图形操作绘制一个任意的裁剪区域,根据您正在做的事情,这可能更合适。 – Dave

+0

Thx @Dave,但裁剪对我来说还不够。大卫的回答对我来说效果不错! –

回答

3

如果您只对绘图感兴趣,并且不计算与他们做别的事情的要点,那么您可以将路径调整到t = 0.5。

您可以通过设置strokeStartstrokeEnd属性来完成此操作,设置为CAShapeLayer。笔画的外观可以是诸如strokeColorlineWidth的属性。我建议您查看the documentation查看完整的房产列表。

的代码会是这个样子(我没有跑这所以有可能是拼写错误等):

CAShapeLayer *halfBezier = [CAShapeLayer layer]; 
// use the full path 
halfBezier.path   = [yourFullPath CGPath]; 
// configure the appearance 
halfBezier.fillColor  = [[UIColor clearColor] CGColor]; 
halfBezier.strokeColor = [[UIColor redColor] CGColor]; 
halfBezier.lineWidth  = 2.0; 

// 0.0 ≤ t ≤ 0.5 
halfBezier.strokeStart = 0.0; // the default value (only here for clarity) 
halfBezier.strokeEnd  = 0.5; // only up until t=0.5 

// add this layer to the view's layer where it is supposed to be drawn 
[yourView.layer addSublayer:halfBezier]; 
+0

谢谢,我刚刚在一条贝塞尔路径动画问题上找到了答案。 –