Я перемещаю несколько слоев CALay, используя метод -mouseDragged
, и теперь я хотел бы «привязать» их, когда они достаточно близко (или когда они немного перекрываются).
Каждый слой не является "квадратом": я рисую разные полигоны.
Я думал, что способ сделать это:
- получить положение перемещаемого слоя;
- получить перекрывающиеся слои или слои, которые находятся рядом с перемещаемым слоем;
- На каждой стороне многоугольника, в которой (2) верно, мне нужно проверить максимальное расстояние (под прямым углом к стороне слоя) между стороной движущегося слоя и стороной слоя, которая является «рядом» (это отрицательное значение, когда слои перекрываются).
- соответственно переместите слой.
Я не знаю, правильный ли это подход. Первое, что приходит мне в голову:
- Что произойдет, если я смогу «защелкнуться» более чем с одной стороны?
И, даже если я попытаюсь таким образом, я понятия не имею, что делать с (2) и (3).
Есть ли лучший способ сделать это?