2015-10-18 75 views
0

大小的標籤,我需要畫一圈一些大小均勻且間隔標籤:繪製甚至繞了一圈

enter image description here

我的目標C。可以創建一個這樣的橢圓形

UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(84, 22, 75, 75)]; 
[UIColor.grayColor setFill]; 
[ovalPath fill]; 

試圖弄清楚如何獲得這些標籤,但它。任何人都可以給我一些指導我如何解決這個問題嗎?需要圍繞圓圈繪製1-20個標籤。想知道是否有某種算法。

回答

1

這將需要你做一些數學。我不打算爲你做數學,但我可以讓你知道你需要做什麼。

有六個均勻間隔的標籤,圓圈上每個標籤的中心點相隔60度。如果我們假設0度是直線上升,那麼您希望標籤集中在0,60,120,180,240和300度。而且由於它看起來沒有看到標籤的邊緣,我假設每個標籤都覆蓋了50度的弧度。

它看起來像標籤的頂部不平坦,而是更大的圓的部分。如果我們調用圖片r中的圓的半徑,那麼較大圓的半徑爲r + h,其中h是選項卡的高度。

如果第一個標籤的中心位於0度,則第一個標籤的左邊緣位於-25度(或335度),第一個標籤的右邊緣位於25度。

因此,繪製第一個標籤:

  • 發現內圓是在335度的角度。然後找到外圈上335度的點。在這兩點之間畫一條線。這是選項卡的左邊緣。
  • 找到25度內圓上的點。然後找到外圓上的相應點並在它們之間劃一條線。這是該選項卡的右邊緣。
  • 繪製兩個外圓點之間半徑爲r + h的50度弧。
  • 您的選項卡已繪製。

然後對以60度爲中心的弧做同樣的事情。你的線將在25和85度。對其他選項卡重複該過程。

要在給定角度找到一個圓上的點,請參見Calculating point on a circle's circumference from angle in C#?

要繪製弧線,請參閱http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths

如果標籤覆蓋的弧度大於或小於50度,請相應地調整上面的數字。也就是說,如果標籤覆蓋40度的弧度,那麼第一個標籤的左邊緣將是-20(340)度,而不是-25(335)度。

請注意,您可能需要將所有度數測量轉換爲弧度。

+0

感謝您的支持! – Kex