0

CAGradientLayerで変換をアニメートしようとしていますが、何をしても、変更を行うことができないようです。このコードを実行した後も、レイヤーは表示されません(つまり、scale.yは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"];
}

}

なぜこれがレイヤーのscale.yを1にアニメーション化しないのか誰かが知っていますか?

4

1 に答える 1

0

スケール 0 を使用すると、レイヤーがゼロ サイズに折りたたまれることを覚えているようです。0 の代わりに .001 のサイズを使用してみてください。

于 2012-06-25T18:25:35.067 に答える