CATransaction не анимируется
-
03-07-2019 - |
Вопрос
Я создал новое приложение на основе представления в 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 для видов и слоев.