2016-03-01 1 views
0

Приложение для официальных фотографий Apple имеет функцию редактирования, которую вы можете обрезать. Я хотел бы реализовать аналогичный элемент управления для обрезки фотографий. Я хотел бы знать, как реализовать изменение размера маски для обрезки.Как реализовать масштабирование путем перетаскивания краев/углов вида, например, Apply Apply Photos?

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

  1. Маска обрезки может быть изменена только путем перетаскивания краев или углов.
  2. Якорная точка масштабирования расположена напротив края или угла начала.
  3. Маска обрезки может иметь блокировку пропорций.
  4. Маска обрезки не должна иметь ограниченные ограничения.

Я выполнил первые 3 требования, но требование 4 беспокоит меня. Рассмотрим случай, когда маска обрезки имеет минимальный размер в нижнем левом углу ограниченных границ. Перетаскивание верхних краев сделает масштаб просмотра с узловой точкой в ​​нижнем левом углу. С этим странным поведением, я думаю, что моя реализацию изменения границ с противоположной точкой привязки не может иметь такое поведение. Поэтому я думаю, что реализация яблока отличается от моей. И я хотел бы знать, как это поведение может быть достигнуто.

ответ

0

Вопрос в том, какую процедуру вы даже взяли.

Я бы предложил, чтобы это было сделано с помощью простого UIScrollView. Ваша «маска обрезки» может быть видом прокрутки, который может быть изменен и изменен путем перетаскивания его углов. В представлении прокрутки должно быть отключено «просмотр субтитров», чтобы вы могли видеть представление содержимого вне прокрутки (представление содержимого - это фактическое изображение).

Таким образом, при прокрутке изображения эта процедура уже сэкономит вам всю необходимую информацию. Перемещение вида прокрутки будет по-прежнему немного работать ... В зависимости от того, в каком углу вы перетаскиваете, вам может потребоваться изменить смещение содержимого, как вы, кажется, уже поняли, и не должно создавать никаких проблем. Затем остается помещать изображение в маску обрезки, когда оно выходит за пределы, которое должно выполняться путем вызова scroll rect для видимого для всего кадра представления контента; если нет, это также можно легко вычислить вручную.

Вы также должны переопределить метод теста ударов, чтобы прокрутка выполнялась вне прокрутки.