我添加了将一个 Controller 推送到另一个 Controller 的动画。这是我推送 View 的代码。这个动画在 iPhone 5S 中需要 2 秒,在 iPhone 5 中需要 5 秒。我无法弄清楚到底是什么问题.我想要这个动画 1 秒。这是我的代码。
DetailVC *detailObj = [[DetailVC alloc] initWithNibName:@"DetailVC" bundle:nil];
detailObj.dataGift = data;
detailObj.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);
[UIView animateWithDuration:1.0
animations:^{
CATransition* transition = [CATransition animation];
transition.duration = 0.75;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:detailObj animated:false];
detailObj.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
} completion:^(BOOL finished) {
}];
});
最佳答案
你在动画 block 中执行动画所以你的持续时间增加了
将您的代码替换为
DetailVC *detailObj = [[DetailVC alloc] initWithNibName:@"DetailVC" bundle:nil];
detailObj.dataGift = data;
detailObj.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);
CATransition* transition = [CATransition animation];
transition.duration = 0.75;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:detailObj animated:false];
detailObj.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
并确保在主队列中执行该操作
希望对你有帮助
关于ios - CATransition 动画在 iOS 中花费很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376767/