Что у меня:
Чтобы создать эту строку, у меня в основном есть UIView
, и я делаю следующее:
void setLayerToLineFromAToB(CALayer *layer, CGPoint a, CGPoint b, CGFloat lineWidth)
{
CGPoint center = { 0.5 * (a.x + b.x), 0.5 * (a.y + b.y) };
CGFloat length = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
CGFloat angle = atan2(a.y - b.y, a.x - b.x);
layer.position = center;
layer.bounds = (CGRect) { {0, 0}, { length + lineWidth, lineWidth } };
layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
}
Примечание. Этот код был найден здесь в stackoverflow, поэтому, если кто-то может дать мне ссылку на него, я был бы признателен.
Что я хочу:
Итак, мне нужна только одна вещь - создать этот шаблон на UIView
. Я знаю, что могу сделать это с помощью Quartz2D (простой способ сделать это можно найти здесь). Но я хочу сделать это, манипулируя CALayer
и не прибегая к методу draw. Зачем? Из-за преобразования, которое я делаю на моем UIView
, я не могу правильно рисовать, используя метод draw
.
Изменить 1:
Просто для иллюстрации моей проблемы:
Обычно у вас есть UIView
, а затем вы в основном просто рисуете что-то в нем (в данном случае простая строка). Решение, которое я нашел, чтобы избавиться от "серой" области, состояло в том, чтобы вместо чего-то рисовать, просто преобразуйте сам UIView
. Он работает хорошо, если вы хотите полностью заполненную линию, проблема возникает, когда вы хотите пунктир.