Положение дуги на окружности

У меня есть круг шириной в несколько пикселей (круг основан на UIBezierPath). Я должен поместить дугу (которая в основном является подклассом UIView с пользовательским рисунком) на круге, чтобы дуга покрывала круг. Я знаю, как рассчитать вращение дуги и положение, но что-то не так. Я имею в виду, что знаю причину - это свойство center, которое назначено центру UIView, если бы это был центр дуги, все было бы здорово. Но это не так.

Я также знаю, как это решить. Мне нужно рассчитать меньший радиус, где я буду ставить дуги. Но как это сделать. В основном это кажется простым, но из-за того, что дуга находится в прямоугольном UIView, это становится немного сложнее. Я покажу вам несколько изображений, чтобы вы могли увидеть проблему.

введите здесь описание изображениявведите здесь описание изображения


person wczekalski    schedule 04.01.2012    source источник


Ответы (2)


Самый простой способ сделать это — изменить точку привязки каждого слоя вида дуги. Вы можете прочитать о точке привязки здесь, если вы еще не знаете об этом. Вам нужно будет добавить инфраструктуру 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));
person rob mayoff    schedule 04.01.2012

Возможно, вы могли бы сделать подкласс UIView того же размера и центральной точки, что и прямоугольник круга. Затем нарисуйте дугу в правильном месте.

person timthetoolman    schedule 04.01.2012
comment
Это не так, каждый зеленый подвид должен быть подвидом этого круга. Мне нужно рассчитать радиус, где я должен разместить эти дуги, но как рассчитать длину пространства между зеленой линией и светло-серым колесом - person wczekalski; 05.01.2012