cameraViewTransform и CGAffineTransformMakeScale - PullRequest
1 голос
/ 10 февраля 2010

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

picker.cameraViewTransform = CGAffineTransformMakeScale(zoomFactor, zoomFactor);

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

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

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

Например, скажем, у вас есть преобразование, которое поворачивает объект на 45 градусов, и вы хотите использовать его для вращения объекта. При первом вызове объект поворачивается на 45 градусов, но не поворачивается в последующие моменты. Это потому, что вы просто устанавливаете одно и то же точное преобразование снова и снова. 45-градусное преобразование всегда одинаково.

Чтобы заставить объект вращаться, вы должны вызвать 45-градусное преобразование, затем вы должны взять полученное преобразование из первой операции и повернуть его на 45 градусов. Затем возьмите результаты этого и поверните его на 45 градусов.

Вам нужно сделать что-то вроде:

picker.cameraViewTransform =CGAffineTransformScale(picker.cameraViewTransform, zoomfactor);

Таким образом, ваши трансформации будут накапливаться, и вы сможете увеличивать и уменьшать масштаб.

0 голосов
/ 14 апреля 2010

Это не столько ответ, сколько подсказка. Каждый раз, когда вы возвращаете камеру на передний план приложения (предположительно, используя presentModalViewController :), это приводит к созданию нового преобразования в cameraViewTransform. Хитрость заключается в том, что для завершения этого процесса, похоже, требуется около секунды, и я не могу найти метод делегата, который бы точно знал, когда новое преобразование безопасно установлено. В моем приложении я ожидаю около 1 секунды, а затем изменяю cameraViewTransform в соответствии со своими потребностями. Счастливое, но единственное решение, которое я нашел до сих пор ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...