Анимация изменения размера кадра UIView с автоматическим изменением размера подпредставлений - PullRequest
7 голосов
/ 21 декабря 2011

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

[UIView beginAnimations:@"Resize" context:nil];
[UIView setAnimationDuration:1.0];
CGRect frame = self.myView.frame;
frame.size.height += 30.0;
self.myView.frame = frame;
[UIView commitAnimations];

Размер представления self.myView изменяется в течение 1 секунды, как и ожидалось, но размер подпредставлений изменяется немедленно. Кто-нибудь знает, почему это происходит, и как я могу сделать так, чтобы подпредставления оживляли их изменение размера?

Из-за того, что я гуглял, я думаю, что это может быть связано со свойством contentMode. К сожалению, мне не совсем понятно, что делает эта собственность. Любая помощь будет высоко ценится.

Ответы [ 2 ]

14 голосов
/ 21 декабря 2011

Было бы трудно кому-то еще дать вам правильный ответ без просмотра вашего кода, хотя я бы спросил вас, что вы делаете после [UIView commitAnimations]. Тем не менее, рад, что вы поняли это. Я предлагаю вам использовать блок анимации. Они делают этот тип ошибки намного легче избежать, используя блок завершения. Пример:

[UIView animateWithDuration:1.0
                 animations:^{
                     CGRect frame = self.myView.frame;
                     frame.size.height += 30.0;
                     self.myView.frame = frame;
                 }
                 completion:^(BOOL finished){
                     // whatever you need to do when animations are complete
                 }];
1 голос
/ 21 декабря 2011

ОК, поэтому я выяснил проблему после прочтения ответа на следующий вопрос: Анимация фрейма UIView, подпредставление UIScrollView не всегда анимирует

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

...