Ik probeer een transformatie op een CAGradientLayer te animeren, maar wat ik ook doe, ik kan de verandering niet laten gebeuren. Nadat deze code is uitgevoerd, is de laag nog steeds niet zichtbaar (d.w.z. scale.y is nog steeds 0.0f).
@implementation NickView
+(Class) layerClass {
return [CAGradientLayer class];
}
- (void) didMoveToWindow {
self.backgroundColor = [UIColor clearColor];
CAGradientLayer* gLayer = (CAGradientLayer*)self.layer;
[gLayer setColors:
[NSArray arrayWithObjects:
(id) [UIColor blackColor].CGColor,
(id) [UIColor redColor].CGColor,
(id) [UIColor blackColor].CGColor,
nil]];
gLayer.transform = CATransform3DMakeScale(1.0, 0.0f, 1.0f);
[self performSelector:@selector(doAnimation) withObject:nil afterDelay:3.0f];
}
- (void) doAnimation {
CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
a.delegate = self;
a.duration = 5.0f;
a.toValue = [NSNumber numberWithFloat:1.0f];
[self.layer addAnimation:a forKey:@"anim"];
}
}
Weet iemand waarom dit niet tot gevolg heeft dat de scale.y van de laag terug naar 1 wordt geanimeerd?