CoreAnimation CABasicAnimation, когда добавить слой - PullRequest
1 голос
/ 27 января 2012

Я читаю документацию Apple по CA, и я пытался сделать простую анимацию. Мне интересно, почему это не работает:

CABasicAnimation *goRight = [CABasicAnimation animationWithKeyPath:@"position"];
goRight.duration = 5;
goRight.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
NSLog(@":%@", [goRight.fromValue description]);
goRight.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
CALayer *thelayer = [CALayer layer];
[thelayer addAnimation:goRight forKey:nil];
[self.aView.layer addSublayer:thelayer];

но если я изменю последние несколько строк на:

//    CALayer *thelayer = [CALayer layer];
//    [thelayer addAnimation:goRight forKey:nil];
//    [self.aView.layer addSublayer:thelayer];
    [self.aView.layer addAnimation:goRight forKey:nil];

это работает. Мне показалось, что я где-то читал в SO, что в свойстве .layer отключены неявные или явные анимации, поэтому я подумал, что мне следует заняться добавлением подслоя в основное свойство .layer и иметь анимацию на этом слое.

Может кто-нибудь помочь объяснить, что я делаю не так? Спасибо.

1 Ответ

3 голосов
/ 27 января 2012

Вы создаете новый слой без содержимого и даете ему анимацию. Есть две проблемы:

  1. Слой имеет размер 0 × 0 по умолчанию, и вы не меняете его размер. Вам нужно сделать его больше 0 × 0, установив либо frame, либо его bounds.
  2. Слой не имеет содержимого или других свойств, которые сделали бы его видимым. Есть много способов сделать это видимым. Один из способов - просто установить цвет фона. Например:

    thelayer.backgroundColor = UIColor.redColor.CGColor;
    

Также, когда вы добавляете анимацию к слою, вы обычно должны использовать имя анимированного свойства в качестве ключа. Например:

[thelayer addAnimation:goRight forKey:@"position"];

Если вы хотите изучить Core Animation, я настоятельно рекомендую посмотреть WWDC видео . Есть два видео, Базовая анимация на практике части 1 и 2, из WWDC 2010. Есть одно видео, Базовая анимация * Основы , из WWDC 2011.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...