2010-03-03 1 views
2

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

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

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

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

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

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

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

спасибо.

+0

Michieal, я столкнулся с аналогичной проблемой. Когда я пытаюсь анимировать представление большего размера с изменением его начала и ширины/высоты, представление сразу изменяется, а затем анимируется в новое место. Это похоже на то, что вы цитировали, но происходит, когда я пытаюсь взорвать представление. Код такой же, как и выше. Что может быть причиной этой проблемы? Как вы его решили?Для будущих и будущих ссылок просьба предложить свой ответ, чтобы другие могли воспользоваться. –

ответ

0

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

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

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

0

Попробуйте

[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]; 
+0

Это автоматически отменяет анимацию. То, что я ищу, соответствует расширяющейся анимации для сокращения анимации. Прямо сейчас уменьшающаяся анимация мгновенно изменяется на меньший размер, а не на оживление. – McDJ

+0

См. Обновление, если я правильно вас понимаю, это должно быть хорошо. – EEE

+0

Спасибо за информацию. Но это то, что я делаю. основанный на моем флагове, я вызываю анимацию либо с помощью bigFrame, либо с smallFrame. Проблема в том, что при большом значении анимация идеальна. Когда вы переходите к маленькому, рамы UIView обновляются мгновенно, а затем меньший кадр перемещается в новые координаты. То, что я ожидал, похоже на анимацию большой, где размер кадра и позиция кадра будут обновляться постепенно. Этого не происходит. на данный момент я удалил анимацию. Я просто не понимаю, почему обратная анимация не совсем то же самое (но наоборот). – McDJ

0

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

UIView scaling during animation

3

Michiel, Радж,

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

Надеется, что это может иметь некоторую помощь: How to make expanding/shrinking views on iPhone SDK

Адам