2017-01-28 60 views
-1

在我的應用程序中,我使用UIBezierPath將圓弧畫成圓。我正在嘗試將數字與弧度相關聯。因此,假設用戶有一定數量的積分,並且積分上限爲100分。我想要100分是360度。我希望圓的第一個33%是綠色,然後從34%到下一個圓的66%以橙色撫摸,然後從67%到100%以紅色撫摸。如何在Objective-C中將點轉換爲弧度?

我在這裏遇到的問題是將圓的百分數轉換爲弧度。在創建UIBezier路徑時,我需要提供startAngle和endAngle,並且在將這些點轉換爲弧度值時遇到了一些問題。

我該如何解決這個問題?

感謝

回答

0
CGFloat radians = percent * 0.01 * 2 * M_PI; 

簡單的代數運算。

+0

我的道歉,但你爲什麼由0.01倍增? –

+0

您的輸入百分比範圍從0到100.您希望得到一個從.01到1.0的十進制值 –

0

我想你想要的是單位圈。使用單位圓時記得回到三角函數嗎?這裏同樣適用。如果你需要得到π - 在Swift中,只需說let π = CGFloat.pi(對於特殊字符按住alt + p)。在Objective-C中 - 我認爲它是CGFloat π = M_PI;

enter image description here

你可以從零到2π/3的前1/3,然後從2π/34π/3,然後從4π/3(整圓)。

我不應該說我沒有製作這個圖形 - 它來自RayWenderlich.com上的一個教程 - 但它完全針對iOS座標系。

+0

您不能在Objective-C中爲變量名使用特殊字符,就像Swift中的can一樣。你需要使用「pi」,而且你是正確的,常數是M_PI –

+0

@Duncan C. - 哦,很高興知道。謝謝! – Pierce

0

Objective-C的

CGFloat fullCircle = 2 * M_PI ;    // M_PI Pi number which is half of the circle in radian 
CGFloat startPoint = 0.0  ; 
CGFloat endPoint = fullCircle * 0.33 ; 

// Assuming circling clockwise 

// .... Draw first step UIBezierPath 

startPoint = endPoint  ; 
endPoint = startPoint + fullCircle * 0.33 ; 
// .... Draw second step UIBezierPath 

startPoint = endPoint  ; 
endPoint = fullCircle - startPoint ;  // This to make sure the whole circle will be covered 
// .... Draw the last step UIBezierPath 

斯威夫特

let fullCircle = 2 * M_PI    // M_PI Pi number which is half of the circle in radian 
var startPoint: Float = 0.0 
var endPoint: Float = fullCircle * 0.33 

// Assuming circling clockwise 
// .... Draw first step UIBezierPath 

startPoint = endPoint 
endPoint = startPoint + fullCircle * 0.33 
// .... Draw second step UIBezierPath 

startPoint = endPoint 
endPoint = fullCircle - startPoint  // This to make sure the whole circle will be covered 
// .... Draw the last step UIBezierPath 
+2

OP的問題指定了Objective-C,而不是Swift。 –