Как нарисовать путь динамической линии на imageView? - PullRequest
0 голосов
/ 27 марта 2019

Я хочу нарисовать линию на изображении, пример ниже-

enter image description here

У меня есть путь от A до F в imageView.

Если я выберу A, а затем D-Path сгенерируется как зеленая линия, а если я выберу A, F-Path сгенерирует как красная линия.

Как это сделать при просмотре изображения?

Все точки (A, B, C, D, E & F) имеют UIButton

1 Ответ

0 голосов
/ 31 марта 2019

Прежде всего я должен сказать, что ваш вопрос был не очень ясным, мне потребовалось некоторое время, чтобы понять, чего вы на самом деле хотите достичь.Надеюсь, я правильно понимаю.Не просто набирая фактический код, который вам нужен, вот как я бы подошел к нему:

Я бы создал массив со словарями, содержащими букву в качестве ключа и точку в качестве значения, выглядя примерно так:

[
["A": CGPoint(x: 0, y: 0)],
["B": CGPoint(x: 0, y: 0)],
["C": CGPoint(x: 0, y: 0)],
["D": CGPoint(x: 0, y: 0)],
["E": CGPoint(x: 0, y: 0)],
["F": CGPoint(x: 0, y: 0)],
]

(или лучше, в этом массиве могут быть пользовательские модели, содержащие аналогичную информацию)

Затем используйте этот массив для построения UIB-кнопок на представлении, давая каждому UIButton ссылку на элемент в массиве.путем его подкласса, например, ключа словаря.

CustomButton: UIButton { 
    var key: String?
}

Затем при нажатии первой кнопки сохраните этот ключ в локальной переменной с именем start, а при нажатии второй кнопки сохраните этот ключ в локальнойпеременная с именем end.Затем выполните цикл по массиву и найдите соответствующий ключ start и используйте значения в массиве, чтобы нарисовать линии, пока не найдете соответствующий ключ end.

Так как я был в настроении, я создалпростая демонстрация игровой площадки, но обычно это не так.Вы не просто запрашиваете пример кода, вы просите о помощи для решения проблемы.

В любом случае, вы можете найти демо здесь: https://gist.github.com/pvroosendaal/f1617fe7e164bc94f0d37d3175252e2f

Кстати, этоЭто самый дурацкий кусок кода, который я написал, но он делает то, что вы хотите.

Надеюсь, это имеет смысл, в противном случае, пожалуйста, дайте мне знать.

...