Перед дальнейшей работой настоятельно рекомендую перечитать раздел 17.14.
Чтобы масштабировать вид, анимируя его при этом, можно либо применить к виду преобразование масштабирования в анимационном блоке (см. раздел 17.12), либо просто увеличить высоту и/или ширину вида.
Рассмотрим, как изменять масштаб вида, применяя к нему преобразование масштабирования:
— (void) viewDidAppear:(BOOL)paramAnimated{
[super viewDidAppear: paramAnimated];
/* Помещаем вид с изображением в центре основного вида данного
контроллера вида. */
self.xcodeImageView.center = self.view.center;
/* Убеждаемся, что к этому виду с изображением не применяется никакого
преобразования сдвига. */
self.xcodeImageView.transform = CGAffineTransformIdentity;
/* Начинаем анимацию. */
[UIView beginAnimations: nil
context: NULL];
/* Анимация продлится 5 секунд. */
[UIView setAnimationDuration:5.0f];
/* Вдвое увеличиваем вид с изображением в ширину и в длину. */
self.xcodeImageView.transform = CGAffineTransformMakeScale(2.0f,
2.0f);
/* Выполняем анимацию. */
[UIView commitAnimations];
}
В этом коде используется аффинное преобразование масштабирования, в результате которого вид с изображением становится в два раза больше по сравнению с исходными размерами. Самое большое достоинство такой операции заключается в том, что в ходе масштабирования начало координат (центр) при увеличении или уменьшении совпадает с началом координат (центром) самого вида. Предположим, что центр вашего вида расположен на экране в точке с координатами (100; 100), а вы хотите масштабировать вид, вдвое увеличив его ширину и высоту. В результате центр вида так и останется в точке (100; 100), в то время как сам вид увеличится в два раза. Если бы мы увеличивали вид, сначала специально добавив ему ширины, а потом высоты, то вид, который получился бы в итоге, находился бы немного не в той точке экрана, где был исходный вид. Это объясняется тем, что, изменяя высоту и ширину рамок вида, вы одновременно изменяете значения
См. также
Разделы 17.12 и 17.14.
17.16. Анимирование и вращение видов
Постановка задачи
Требуется анимировать виды на экране при вращении.
Решение
Создайте аффинное преобразование вращения, для анимирования вращения пользуйтесь методами класса UIView.
Перед дальнейшей работой настоятельно рекомендую перечитать раздел 17.14.
Чтобы вращать вид, анимируя его при этом, нужно применить к нему преобразование вращения в то время, как в коде выполняется анимационный блок (см. раздел 17.12). Рассмотрим пример кода, который прояснит это. Допустим, у нас есть рисунок Xcode.png (см. рис. 17.9) и мы хотим отобразить его в центре экрана. После того как картинка появится на экране, мы повернем ее на 90° за 5 секунд, а потом повернем обратно, поставив в исходное положение. Итак, когда вид с изображением появится на экране, повернем этот вид на 90° по часовой стрелке:
— (void) viewDidAppear:(BOOL)paramAnimated{
[super viewDidAppear: paramAnimated];
self.xcodeImageView.center = self.view.center;
/* Начинаем анимацию. */
[UIView beginAnimations:@"clockwiseAnimation"
context: NULL];
/* Анимация будет длиться 5 секунд. */
[UIView setAnimationDuration:5.0f];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector:
@selector(clockwiseRotationStopped: finished: context:)];