gpt4 book ai didi

ios - 默认推送 viewController 动画不播放

转载 作者:行者123 更新时间:2023-11-29 05:57:16 26 4
gpt4 key购买 nike

我的应用程序中有一个 float 错误。有时,当我做

rootNavigationController.pushViewController(viewController, animated: animated)

动画不起作用。新的 viewController 被创建,并且方法 viewWillAppear 被调用,但是 UI 没有改变。新的 viewController 位于屏幕之外。

我使用 swizzling 连接到 CALayer.add(_:forKey:)。这是没有问题的动画堆栈跟踪:

Thread 1 Queue : com.apple.main-thread (serial)
#0 0x00000001030ae890 in CALayer.swizz_add(_:forKey:)
#1 0x00000001030af468 in @objc CALayer.swizz_add(_:forKey:) ()
#2 0x000000018af12708 in -[UIViewAnimationState _trackAnimation:nonAdditiveAnimation:withAnimationKey:forKeyPath:inLayer:] ()
#3 0x000000018ba5dbe0 in __85+[UIViewPropertyAnimator _animationBlockForTrackingAnimation:animator:trackingSetup:]_block_invoke ()
#4 0x000000018afaa224 in -[UIViewPropertyAnimator _runAnimations] ()
#5 0x000000018ba64484 in __49-[UIViewPropertyAnimator startAnimationAsPaused:]_block_invoke_2 ()
#6 0x000000018ba642d4 in __49-[UIViewPropertyAnimator startAnimationAsPaused:]_block_invoke ()
#7 0x000000018ba643f8 in __49-[UIViewPropertyAnimator startAnimationAsPaused:]_block_invoke.1052 ()
#8 0x000000018afa9cbc in -[UIViewPropertyAnimator _setupAnimationTracking:] ()
#9 0x000000018afa96d4 in -[UIViewPropertyAnimator startAnimationAsPaused:] ()
#10 0x000000018afa79b4 in +[UIViewPropertyAnimator _trackAnimationWithAnimator:forLayer:forAnimationKey:trackingSetup:] ()
#11 0x000000018b00ea90 in +[UIViewPropertyAnimator _trackAdditiveAnimationWithAnimator:nonAdditiveAnimation:withAnimationKey:forKeyPath:forLayer:] ()
#12 0x000000018b1e0534 in __67-[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:]_block_invoke.170 ()
#13 0x000000018aeab20c in -[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:] ()
#14 0x0000000185338c24 in CA::Layer::set_position(CA::Vec2<double> const&, bool) ()
#15 0x000000018532aa24 in -[CALayer setPosition:] ()
#16 0x000000018532afd4 in -[CALayer setFrame:] ()
.....

当我遇到错误时,这里是堆栈跟踪:

#0  0x000000010488a554 in CALayer.swizz_add(_:forKey:)
#1 0x000000010488aefc in @objc CALayer.swizz_add(_:forKey:) ()
#2 0x000000018b1fb0ec in __modifyTrackedAnimationsWithFactory_block_invoke ()
#3 0x000000018b1ebdc4 in mapTrackedAnimations ()
#4 0x000000018b1ebb40 in +[UIView modifyTrackedAnimations:removeOnCompletion:animationFactory:block:] ()
#5 0x000000018ba5fe00 in -[UIViewPropertyAnimator _pauseAnimation:] ()
#6 0x000000018ba61080 in -[UIViewPropertyAnimator pauseAnimation] ()
#7 0x000000018afa79d8 in +[UIViewPropertyAnimator _trackAnimationWithAnimator:forLayer:forAnimationKey:trackingSetup:] ()
#8 0x000000018b00ea90 in +[UIViewPropertyAnimator _trackAdditiveAnimationWithAnimator:nonAdditiveAnimation:withAnimationKey:forKeyPath:forLayer:] ()
#9 0x000000018b1e0534 in __67-[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:]_block_invoke.170 ()
#10 0x000000018aeab20c in -[_UIViewAdditiveAnimationAction runActionForKey:object:arguments:] ()
#11 0x0000000185338c24 in CA::Layer::set_position(CA::Vec2<double> const&, bool) ()
#12 0x000000018532aa24 in -[CALayer setPosition:] ()
#13 0x000000018532afd4 in -[CALayer setFrame:] ()
....

在第二种情况下,pauseAnimation 被调用为 startAnimationAsPaused:,并且为键 "UIPacingAnimationForAnimatorsKey", "添加动画位置” 速度 = 0。我在哪里会犯错误?这是设备和模拟器上的错误。我不使用自定义过渡。

最佳答案

当你进行调整时,很可能你有一些错误的实现。尝试禁用它并检查是否正在调用 startAnimationAsPaused 。如果它按预期工作,那么深入了解 swizzling 的内容(很高兴看到您的代码)并检查那里发生了什么。

关于ios - 默认推送 viewController 动画不播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025494/

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