Я хочу, чтобы в основном сделать пунктирные значения, соответствующие значениям от 0 до 100. Я не хочу получать 10 разных изображений, представляющих разные 10-точечные приращения. Как мне это сделать?Как нарисовать круг линий
Что-то вроде этого
Я хочу, чтобы в основном сделать пунктирные значения, соответствующие значениям от 0 до 100. Я не хочу получать 10 разных изображений, представляющих разные 10-точечные приращения. Как мне это сделать?Как нарисовать круг линий
Что-то вроде этого
сделать пользовательский подкласс UIView.
Override drawRect.
В нем вы будете использовать эти функции:
Если посмотреть вверх по документация этих функций вы быстро найдете перекрестные ссылки на нужные вам функции.
В то время как я не дома в прошивке или Objective-C, концепция является универсальным.
Положение любой точки на круге можно охарактеризовать как sin(angle)*radius,cos(angle)*radius
. Таким образом, вы можете нарисовать круг, как это самостоятельно, следуя этой концепции (в псевдокоде):
drawCircle(radius, borderWidth, dashDensity)
{
int numberOfDashes = radius/dashDensity);
float radsPerDash = pi * 2/numberOfDashes;
float innerRadius = radius - (borderWidth/2);
float outerRadius = radius + (borderWidth/2);
for(float angle = 0; angle < pi * 2; angle += radsPerDash)
DrawLine(sin(angle)*innerRadius, cos(angle)*innerRadius,
sin(angle)*outerRadius, cos(angle)*outerRadius);
}
Вы должны быть в состоянии получить его, чтобы посмотреть, как вы хотите здесь. Разумеется, вы также можете автоматически вычислить dashDensity
с radius
с использованием магической константы и использовать ширину линии, как вам кажется, подходящей для более толстых тире.
Для полукруга (например, 85% заполненных), изменить конечное состояние цикла:
for(float angle = 0; angle < (pi * 2 * 0.85); angle += radsPerDash)
Очень полезно. Однако я закончил работу с обычным безьером. Затем я устанавливаю цвет, узор линии (тире) и заливку для достижения этого эффекта –
Извините, скажите rtm здесь, но сделайте это. Создайте круг с CGPathCreateMutable
и CGPathAddArc
, затем используйте CGPathCreateCopyByDashingPath
. Готово.
Пробовал 'UIBezierPath'? – Undo