Как я могу переместить UIView, но оставить его позиции контента без изменений относительно суперпредставления? - PullRequest
0 голосов
/ 06 января 2012

UIView имеет 2 изображения в качестве подвидов, а для clip to bounds установлено значение yes.

Я хочу переместить UIView в блоке анимации, но у вспомогательных представлений не будет перемещаться вместе с родителем.Если вид должен был переместиться на 50 пунктов вправо, было бы видно больше второго изображения и меньше первого.

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

1 Ответ

0 голосов
/ 06 января 2012

Я думаю, что ограничение, с которым вы сталкиваетесь, связано с тем, что блоки UIView Animation используют Core Animation под капотом, а Core Animation анимирует слой представления, который является копией исходного представления / слоя, который анимация была запланирована на. Таким образом, во время анимации вашего блока позиция презентационного слоя меняется, но позиция модельного представления остается неизменной.

Поскольку вы упомянули, что вы можете обновить позицию просмотра вручную (и позиции подпредставления в противоположном направлении) для достижения желаемого эффекта, рассмотрите возможность создания NSTimer во время графика анимации, которое выполняется 60 раз в секунду (чтобы попытаться поймать каждую анимацию frame), который просто запрашивает у уровня представления текущую позицию (заданную самой анимацией + любые специальные функции синхронизации, указанные в качестве аргумента анимации) и выполняет свою работу по обновлению базовой модели, чтобы она соответствовала этому.

Вы должны иметь возможность запросить позицию анимированного слоя с помощью:

yourUIView.layer.presentationLayer.frame.origin

Затем добавьте блок завершения к вашей анимации, который делает недействительным таймер.

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

QuartzCore.framework

Приветствия

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