Создание пользовательского перехода, который увеличивает изображение круга

Я пытаюсь создать собственный переход iOS 7. В настоящее время у меня есть простой вид круга, подобный этому: введите здесь описание изображения

У меня есть распознаватель жестов в пользовательском представлении. При щелчке вызывается делегат пользовательского перехода

`-[CCZTTransitionDelegate animationControllerForPresentedController:presentingController:sourceController:]`  

Что, в свою очередь, вызывает два метода класса анимации перехода:

-[CCZTAnimatedTransitioning transitionDuration:]
-[CCZTAnimatedTransitioning animateTransition:]

В настоящее время я только что увеличил масштаб второго контроллера, и все работает нормально...

Желаемый эффект
Что я хотел бы сделать при касании круга, так это
1. увеличить размер круга до тех пор, пока экран полностью не покроется его цветом.
2. Затемнение второго контроллера

Как лучше всего выполнить шаг 1? Можно ли это выполнить в методах анимации делегата перехода/перехода?

В этом методе - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext похоже, что у меня есть доступ к контроллерам представления, но не к подпредставлению. Должна ли анимация быть сделана раньше, если да, то как?

Примечание: со временем в конце концов появится группа кругов, а не один.

РЕДАКТИРОВАТЬ:
Также важно отметить, что я на самом деле пытаюсь увеличить масштаб от центра круга. Поэтому, если круг расположен в другом месте (например, когда их больше), круг должен увеличиваться/увеличиваться в размере от своей центральной точки.


person StuartM    schedule 09.05.2014    source источник
comment
Какой тип объекта является кругом? Я имею в виду позади ... это не UIView?   -  person Matteo Gobbi    schedule 09.05.2014
comment
возможно, попробуйте использовать CGAffineTransformScale на круге и разверните его, чтобы заполнить весь вид. Как только он заполнит представление, представьте свой следующий контроллер представления за заполненным представлением, а затем исчезните представление, открывая ваш недавно представленный контроллер представления.   -  person chetem    schedule 09.05.2014
comment
@MatteoGobbi - да, тип UIView с изменением радиуса слоя.   -  person StuartM    schedule 10.05.2014
comment
@croberth - Как мне определить, что круг заполнил весь вид? Например, если круг находится в верхнем правом углу по сравнению с нижним левым и т. Д. И как мне исчезнуть?   -  person StuartM    schedule 10.05.2014
comment
Вы можете получить доступ к подпредставлению, добавив общедоступное свойство для подпредставления и получив к нему доступ через контроллер представления.   -  person Rick    schedule 10.05.2014
comment
Тогда, если бы у меня было 20 кругов, у меня было бы свойство для каждого, что кажется немного большим. Я пытаюсь использовать предложенное решение для @croberth   -  person StuartM    schedule 10.05.2014
comment
вы бы использовали блок анимации uiview с завершением. Таким образом, вы узнаете, когда анимация будет завершена, по блоку завершения. Затем увеличьте пользовательский интерфейс, который вы только что увеличили, изменив его альфа-значение, снова внутри блока анимации uiview.   -  person chetem    schedule 10.05.2014
comment
Позвольте мне понять... если круг не в центре, а, например, в правом верхнем углу... какой эффект вы хотите применить?   -  person Matteo Gobbi    schedule 10.05.2014
comment
@MatteoGobbi - Тот же эффект, как если бы он был посередине. Я думаю, что отсортировал это с помощью CGAffineTransformScale, как было предложено. Единственная проблема, с которой я сейчас сталкиваюсь, - это обратное, когда переход меняется на противоположный, круговое представление больше не находится на фактическом контроллере представления?   -  person StuartM    schedule 10.05.2014
comment
@croberth - Пожалуйста, отправьте предлагаемый ответ, и я могу отправить другой вопрос по любым другим вопросам.   -  person StuartM    schedule 10.05.2014
comment
так что вы хотите увеличить центр круга до тех пор, пока фиолетовая часть не заполнит весь вид? Но вы хотите, чтобы, например, в углу вверху слева, круг расширялся вправо и вниз.. правильно?   -  person Matteo Gobbi    schedule 10.05.2014
comment
Отдельный вопрос создан для другой проблемы: - заголовок stackoverflow.com/questions/23574403/   -  person StuartM    schedule 10.05.2014


Ответы (1)


Попробуйте использовать анимацию CGAffineTransformScale для представления круга и разверните ее, чтобы заполнить все представление. Как только масштабирование будет выполнено (либо с помощью блока завершения анимации UIView, либо с помощью UIViewKeyFrameAnimation), представьте свой следующий контроллер представления за заполненным представлением. После представления затените представление, чтобы открыть вновь представленный контроллер представления, с помощью альфа-канала представления в блоке анимации.

person chetem    schedule 12.05.2014
comment
Спасибо за публикацию ответа, в конце концов;) - person StuartM; 12.05.2014