Я создал новое приложение на основе View в XCode.CATransaction Без анимации
В 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.
Разве это не то, что строка «newView.layer.frame = CGRectMake (20,20,220,220);» делает? Свойство «layer» обращается к CALayer UIView. Это должно анимировать его, правильно? – mazniak
Вы правы, я неправильно понял эту строку. В этом случае то, что вы делаете, должно оживить. Это немного чище использовать блок UIView begin/commit, но он должен работать одинаково. –
Я думаю, что может случиться так, что цикл запуска не заканчивается после добавления нового подвью, но перед запуском анимации. Поэтому он просто помещает представление в свою конечную позицию. Попробуйте переместить код анимации в отдельный метод и запустить этот метод с помощью функции performSelector: withObject: afterDelay: с задержкой 0,01 с. Это должно позволить анимации активироваться после добавления subview. –