2012-05-04 8 views
1

これはなぜ機能しないのかわかりません。新しく追加されたサブレイヤの暗黙的なアニメーションは、ボタンのプッシュや別のメソッドから呼び出されるようなものまでトリガされるまではできません。これは私が思うにもかかわらず、ここでは以下のアニメーションはありません。これは、レイヤの「後」の状態を示しています。Core Animation新しく追加されたサブレイヤに対して暗黙のアニメーションが実行されない

CAGradientLayer *newBar = [CAGradientLayer layer]; 

    CGFloat barHeight = ((pair.amount.floatValue/self.model.maxModelValue.floatValue)*maxBarHeight); 
    newBar.bounds=R(0,0,self.barWidth,0); 
    newBar.anchorPoint=P(0, 1); 
    newBar.position=P((i*barSpacing), self.insideLayer.bounds.size.height); 
    newBar.backgroundColor=self.lowerColor.CGColor; 
    newBar.colors=[NSArray arrayWithObjects:(id)self.upperColor.CGColor, self.lowerColor.CGColor, nil]; 
    newBar.cornerRadius=self.cornerRadius; 
    newBar.opacity=1.0; 
    [self.insideLayer addSublayer:newBar]; 

    //animation line: 
    newBar.opacity=0.5; 

答えて

5

レイヤーがプレゼンテーションレイヤー階層の一部でない場合、Core Animationは暗黙のアニメーションを作成しません。

はこれを試してみてください:

... 
[self.insideLayer addSublayer:newBar]; 

// Tell Core Animation to update the presentation layer hierarchy: 
[CATransaction flush]; 

// animation line: 
newBar.opacity = 0.5; 
+0

神が、おかげでロブを畜生!私は、これを使って新たに追加されたレイヤーのpresentationLayerを回避する唯一の狂った人だと思った。 – Andy

関連する問題