いくつかの CALayer の位置のアニメーションを実行したいと考えています。アニメーションが終了する前に、別のコントローラーをプッシュしUIViewController
て、この最後の UIView コントローラーをポップするとCALayers
元の位置に戻るようにします。これは私のコードです:
CABasicAnimation *animation4 = [CABasicAnimation animationWithKeyPath:@"position"];
animation4.fromValue = [control.layer valueForKey:@"position"];
CGPoint endPoint4=CGPointMake(512, -305);
animation4.toValue =[NSValue valueWithCGPoint:endPoint4];
animation4.duration=1;
[control.layer addAnimation:animation4 forKey:@"position"];
[self performSelector:@selector(goToSolutionViewController) withObject:nil afterDelay:0.9];
そしてgoToSolutionViewController
私は持っています:
-(void)goToSolutionViewController{
SolutionViewController *solution=[self.storyboard instantiateViewControllerWithIdentifier:@"SolutionViewID"];
[self.navigationController pushViewController:solution animated:NO];
}
問題はそれです
[self performSelector:@selector(goToSolutionViewController) withObject:nil afterDelay:0.9]
アニメーションが終了するまで呼び出されません。SogoToSolutionViewController
は 0.9 秒ではなく 1.9 秒後に呼び出されます。
アニメーションが終了する前に UIViewController をプッシュするにはどうすればよいですか? または、CALayers
ポップしたときに元の位置に戻るようにUIViewController
しますが、ユーザーは戻る方法を見ることができません。
編集: - -
このパフォーマンスの問題は、アニメーションを初めて実行して UIViewcontroller をプッシュしたときにのみ発生します。ポップしてすべてをやり直すと、パフォーマンスは幽霊のようです。問題は、初回の UIViewController ロード時間にある可能性があります。