Вопрос

Я создал новое приложение на основе представления в XCode.

В ViewController единственный измененный мной код выглядит так:

- (void)viewDidLoad {
[super viewDidLoad];

UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
newView.backgroundColor = [UIColor redColor];
[self.view addSubview:newView];


[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];

newView.layer.frame = CGRectMake(20,20,220,220);

[CATransaction commit];
}

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

Может ли кто-нибудь помочь или указать мне правильное направление некоторых материалов для чтения Core-Animation.Я уже просмотрел все материалы Apple.

Это было полезно?

Решение

Ваш код будет анимироваться так, как и ожидалось, если бы вы устанавливали свойства CALayer (они анимируются по умолчанию).Чтобы UIViews анимировались, вы должны изменить их свойства внутри блока, как показано ниже:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];

// Change properties here

[UIView commitAnimations];

CATransactions используются для группировки анимаций, чтобы они были скоординированы, или для ручного отключения анимации для группы объектов.

Другие советы

Может ли кто-нибудь помочь или указать мне правильное направление некоторых материалов для чтения Core-Animation.Я уже просмотрел все материалы Apple.

Видеть: Базовая анимация для Mac OS X и iPhone:Создание привлекательных динамических пользовательских интерфейсов за отличное описание Core Animation для видов и слоев.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top