2012-01-04 19 views
0

私は幅の広いピクセル(円はUIBezierPathベース)を持っています。円上にアーク(基本的にUIViewサブクラスでカスタム図面付き)を配置して、円が円を覆うようにする必要があります。私は円弧と位置の回転を計算する方法を知っていますが、何かが正しくありません。私はその理由を知っていることを意味します - それは、UIViewの中心に割り当てられたbeacauseの中心プロパティです。円の中心だったら、すべてが素晴らしいでしょう。しかし、そうではありません。円上の円の位置

私もそれを解決する方法を知っています。私は、円弧を置く小半径を計算しなければなりません。しかし、それを行う方法。基本的には簡単ですが、円弧が長方形の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

関連する問題