Автоматическое изменение размера кадра UILabel при анимации кадра (размера) родительского UIView

У меня есть родительский UIView, у которого есть дочерний UIView (UILabel, используемый в приведенном ниже коде), чей фрейм установлен на родительских границах и чей autoresizingMask настроен на гибкую ширину и высоту:

UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
UILabel* childLabel = [[UILabel alloc] initWithFrame:parentView.bounds];
childLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
childLabel.textAlignment = UITextAlignmentCenter;
childLabel.text = @"Hello";

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

[UIView animateWithDuration:1.0 animations:^{ parentView.frame = CGRectMake(0, 0, 160, 240); }];

В результате этой анимации я бы хотите, чтобы текст UILabel анимировался вместе с анимацией родительского представления, чтобы визуально вы бы увидели, как текст перемещается от центра (160, 240) к (80, 120). Однако вместо анимации кажется, что для кадра подпредставления сразу устанавливается значение, которое он должен иметь в конце анимации, поэтому вы видите, что положение текста сразу же перескакивает при запуске анимации.

Есть ли способ заставить субпредставления автоматически изменять размер как часть анимации?

14
задан davehayden 9 July 2012 в 07:41
поделиться