0

特定の図形のパスの変更をアニメーション化しようとしています。このコードを単純な.path [cgpath]セッターに置き換えることで、アニメーションなしで手動で変更できます。しかし、私は美学の変化を生き生きとしたい。CAShapeLayerパスのアニメーション

このコードを実行すると、アニメーションが完了したことを示すログが表示されますが、シェイプに変更はありません。

for (CALayer *layer in self.view.layer.sublayers) { 
    if ([layer isKindOfClass:[CAShapeLayer class]]) { 
     CAShapeLayer *copy = (CAShapeLayer *)layer; 
     if ([sideChoice isEqualToString:@"datum"]) { 
      if ([copy.name isEqualToString:@"datumSideLayer"]) { 
       [CATransaction begin]; 
       [CATransaction setCompletionBlock:^{ 
        NSLog(@"Animation complete."); 
       }]; 
       CABasicAnimation *morph = [CABasicAnimation animationWithKeyPath:@"path"]; 
       morph.duration = 1; 
       morph.toValue = pathChange; 
       [copy addAnimation:morph forKey:nil]; 

       [CATransaction commit]; 
       break; 
      } 
     } else if ([sideChoice isEqualToString:@"opposite"]) { 
      if ([copy.name isEqualToString:@"oppositeSideLayer"]) { 

      } 
     } 
    } 
} 

答えて

0
for (CALayer *layer in self.view.layer.sublayers) { 
    if ([layer isKindOfClass:[CAShapeLayer class]]) { 
     CAShapeLayer *copy = (CAShapeLayer *)layer; 
     if ([sideChoice isEqualToString:@"datum"]) { 
      if ([copy.name isEqualToString:@"datumSideLayer"]) { 
       [CATransaction begin]; 
       [CATransaction setCompletionBlock:^{ 
        NSLog(@"Animation complete."); 
       }]; 
       CABasicAnimation *morph = [CABasicAnimation animationWithKeyPath:@"path"]; 
       morph.duration = 1; 
       morph.fromValue = (id) copy.path; 
       morph.toValue = (id) pathChange.CGPath; 
       [copy addAnimation:morph forKey:nil]; 

       copy.path = [pathChange CGPath]; 
       [CATransaction commit]; 
       break; 
      } 
     } else if ([sideChoice isEqualToString:@"opposite"]) { 
      if ([copy.name isEqualToString:@"oppositeSideLayer"]) { 

      } 
     } 
    } 
} 

私が正しく場合、fromValueを設定していないも私はCGPathに指しました。

関連する問題