Проблема анимации UIView (сопоставление расширяющейся анимации с уменьшающейся анимацией) - PullRequest
2 голосов
/ 03 марта 2010

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

Я делаю это, настраивая фрейм в соответствии с его новым размером и происхождением и выполняя код ниже.

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
self.theView.frame = frame;
[UIView commitAnimations];

При анимации в большем размере анимация такая, какой она должна быть. Но при анимации до исходного размера (меньшего размера) вид мгновенно изменяется, а затем анимируется в указанное место.

Что мне нужно, так это то, что изменение размеров в меньшем кадре также анимировано.

Я также пытался настроить маску autoresizingMask, но это ничего не изменило.

Надеюсь, кто-то может помочь.

спасибо.

Ответы [ 4 ]

3 голосов
/ 16 августа 2010

Michiel, Raj,

Я создал учебник для YouTube, в котором показано, как увеличивать и уменьшать представления, как в приложении для iPhone на Facebook.

Надеюсь, что это может помочь: Как сделать расширение / сжатие представлений на iPhone SDK

Адам

0 голосов
/ 12 ноября 2010

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

Поэтому я решил проверить это. Угадай, что. Проблема не возникает при использовании SDK 4.x

Спасибо всем за попытку помочь мне.

0 голосов
/ 08 июля 2010

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

Масштабирование UIView во время анимации

0 голосов
/ 03 марта 2010

Попробуйте это

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationRepeatAutoreverses:YES];
self.theView.frame = frame;
[UIView commitAnimations];

В ответ на комментарий ;

Если вы хотите управлять реверсом анимации, установите флажок типа BOOL isbig и установите его при запуске приложения на NO, затем переключайте его при каждом нажатии кнопки, затем проверяйте его, если это ДА или НЕТ, и в соответствии с результатом вызвать метод. Если НЕТ, назовите свой код, если не вызовите код снова, но на этот раз установите кадр в исходный размер.

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
self.theView.frame = originalFrame;
[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...