2014-01-18 187 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

謝謝,我剛剛在一條貝塞爾路徑動畫問題上找到了答案。 –