gpt4 book ai didi

ios - animationControllerForPresentedController 和 animateTransition 之间的自定义过渡动画未知延迟

转载 作者:IT王子 更新时间:2023-10-29 05:36:56 24 4
gpt4 key购买 nike

我的目标是让流畅的动画在第一个 View Controller 中开始并在第二个 View Controller 中结束。

我正在使用符合 UIViewControllerAnimatedTransitioningUIViewControllerTransitioningDelegate 协议(protocol)的对象试验过渡动画。我在 Storyboard中设置了两个 View Controller (VC) 并将它们与 segue(默认显示)连接。我还在第一个 VC 中制作了 unwind segue 方法,并在第二个 VC 中为其设置了一个按钮。

我有一个奇怪的问题。我的对象有方法

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {

self.presenting = true
NSLog("start")
return self
}

func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
if presenting {
NSLog("Animation Push")
transitionPush(transitionContext)

}
else {
NSLog("Animation Pop")
transitionPop(transitionContext)

}
}

从第一个 VC 到第二个 VC 以及从第二个 VC 到第一个 VC,我有两种不同的动画方法。 当我激活 segue 时,animationControllerForPresentedControlleranimateTransition 方法之间有非常奇怪的延迟。有时它可能是 1 秒左右,我的整个过渡动画必须是 1 秒加上这个意外的延迟太大了。这是一个日志:

2015-02-08 19:52:33.528 MyApp[1318:119598] start
2015-02-08 19:52:33.979 MyApp[1318:119598] Animation Push

我不知道为什么会出现这种延迟,是否有办法消除或减少这种延迟?我试图检查这是否可能是我的代码,但我没有找到任何证据。欢迎随时询问更多信息。

最佳答案

我遇到了同样的问题。您可能没有从主线程(presentViewController 调用)触发动画。

这为我解决了问题(Objective-C 代码):

dispatch_async(dispatch_get_main_queue(),
^{
[self presentViewController:viewControllerToPresent
animated:YES
completion:nil];
});

关于ios - animationControllerForPresentedController 和 animateTransition 之间的自定义过渡动画未知延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28396898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com