Как перетащить только один угол просмотра изображения в iOS - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь реализовать одну функцию приложения для редактирования фотографий. У меня нет никакой подсказки для реализации этого, поэтому я делюсь фотографиями, чтобы объяснить мой вопрос. Нормальная картинка выглядит следующим образом.

enter image description here когда я щелкаю нижний правый угол изображения и перетаскиваю его вниз, он только расширяет эту часть, и новое изображение выглядит следующим образом.

enter image description here

И если я сделаю обратное, картинка будет выглядеть следующим образом.

enter image description here

, поэтому вопрос в том, какой жест фактически поддерживает этот вид перетаскиванияи как это реализовать?Для понимания теста вы можете увидеть приложение мужественный , которое реализует это в разделе абс.

1 Ответ

0 голосов
/ 23 июня 2018

Так что подумайте.Если вы возьмете правый нижний угол и начнете перетаскивать, вам нужно не только изменить местоположение этого угла, но также изменить положение X в верхнем правом углу и положение Y в нижнем левом углу, чтобы полученная форма всегда былапрямоугольник.

В качестве альтернативы, вы можете использовать CGRect вместо случайного четырехугольника, а затем просто выяснить, какие свойства прямоугольника вам нужно изменить для каждого угла (для нижнего правого угла вы просто редактируете высотуи ширина. В верхнем правом углу вы должны изменить высоту, ширину и origin.y. для верхнего левого, вам нужно изменить высоту, ширину, origin.x и origin.y. Для нижнего левого вынеобходимо изменить высоту, ширину и origin.x.

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

Это не так сложно, и это просто графическое программирование.Вы бы многому научились, если бы делали это сами, а не использовали сторонние фреймворки.

...