2012-01-04 64 views
0

我有幾個像素寬的圓(圓是基於UIBezierPath的)。我必須在圓上放置一個圓弧(基本上是UIView子類,具有自定義繪圖),以便圓弧覆蓋圓。我知道如何計算弧線和位置的旋轉,但有些東西是不正確的。我的意思是我知道原因 - 這是因爲分配給UIView中心的中心屬性,如果它是弧的中心,那麼一切都會很好。但事實並非如此。Arc在圓上的位置

我也知道如何解決這個問題。我必須計算更小的半徑,在那裏放置弧。但如何做到這一點。基本上它看起來很容易,但由於矩形UIView中的弧線有點困難。我會告訴你一些圖像,以便你可以看到問題。

enter image description here enter image description here

回答

2

最簡單的方法是更改​​每個弧視圖圖層的錨點。 You can read about the anchor point here如果你還不知道。 您需要將QuartzCore框架添加到您的構建目標並添加#import <QuartzCore/QuartzCore.h>

CGRect circleBounds = circleView.bounds; 

topArcView.layer.anchorPoint = CGPointMake(.5, 0); 
topArcView.layer.position = CGPointMake(CGRectGetMidX(circleBounds), 0); 

bottomArcView.layer.anchorPoint = CGPointMake(.5, 1); 
bottomArcView.layer.position = CGPointMake(CGRectGetMidX(circleBounds), CGRectGetMaxY(circleBounds)); 

leftArcView.layer.anchorPoint = CGPointMake(0, .5); 
leftArcView.layer.position = CGPointMake(circleBounds.origin.x, CGRectGetMidY(circleBounds)); 

rightArcView.layer.anchorPoint = CGPointMake(1, .5); 
rightArcView.layer.position = CGPointMake(CGRectGetMaxX(circleBounds), CGRectGetMidY(circleBounds)); 
0

也許你可以讓UIView子類相同的大小和中心點爲圓的矩形。然後在正確的位置繪製弧線。

+0

並非如此,每一個綠色的子視圖都必須是這個圓圈的子視圖。我必須計算應該放置這些弧線的半徑,但是如何計算綠線和淺灰色「輪子」之間的空間長度, – wczekalski 2012-01-04 20:40:36