繁体   English   中英

iOS 13 中没有流行动画

[英]No pop animation in iOS 13

我有一个旧应用程序,我正在尝试更新它以修复出现在 iOS 13 中的错误。不幸的是,更新到 iOS 13 SDK 触发了其他几个错误。 我已经修复了所有问题,主要是通过对 info.plist 文件的调整,除了这一件事。

我使用标准的UINavigationController来显示一系列表格视图。 当我单击表格行时,会触发pushViewController:animated:转到下一个视图。 这看起来不错并且动画正确,但控制台会为我要离开的视图显示消息“不平衡调用开始/结束外观转换”。

当我单击后退按钮或在视图上从左向右滑动时,上一个视图立即出现,没有动画。 控制台再次为传出视图显示警告“开始/结束外观转换的呼叫不平衡”。 导航栏动画正确,从旧视图淡入新视图,但视图没有动画。 如果我通过滑动导航回来,我会得到相同的行为。 事实上,如果我非常缓慢地向后滑动,则在滑动开始时视图会立即弹出,而不是在我移动手指时慢慢将旧视图拖到位。

我发现很多帖子在将导航控制器放置在标签栏控制器中时会发生这种情况,我没有这样做,或者以编程方式推送视图时,我没有这样做。 我已经检查过viewWillAppearviewDidAppear每个覆盖都调用了它的超类,并且我没有不匹配的调用(从viewWillAppear调用super viewDidAppear ,反之亦然)。

我没有使用故事板,只是使用pushViewController方法的普通老式目标 C 代码。 我确实以编程方式将导航控制器设置并放置在容器视图控制器中,如下所示:

MainMenu *rootViewController = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController.delegate = self;
[self addChildViewController:self.navigationController];
[self.navigationController didMoveToParentViewController:self];
[self.view addSubview:self.navigationController.view];

当我在 iOS 12 设备上运行该应用程序时,它可以完美运行。 该问题仅发生在 iOS 13 设备上。 我有另一个应用程序,它使用相同的结构,最初是在同一时间构建的,但定期更新 iOS 版本,它没有问题。 我比较了我能想到的每个文件和设置,但找不到两个应用程序之间的相关差异。

有没有其他人在更新 iOS 13 时看到过这个?

更新

为了消除容器视图中的任何问题,我临时更改了应用程序以将导航控制器直接放入窗口中。 所以我现在在application:DidFinishLaunchingWithOptions:有这个:

MainMenu *mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:mainMenu];
[self.window addSubview:self.navigationController.view];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];

然后为了消除我导航到的视图控制器的任何问题,我创建了一个仅包含一个空视图的新笔尖,并在 MainMenu 中,当单击表行时,我运行以下代码:

UIViewController *viewController = [[UIViewController alloc] initWithNibName:@"Empty" bundle:nil];
[self.appDelegate.navigationController pushViewController:viewController animated:YES];

然后我单击左上角系统提供的后退按钮,MainMenu 重新出现,但没有动画和相同的控制台消息。 我觉得这和我的项目设置有关,因为代码非常简单明了。 我在这个项目的 project.pbxproj 文件和一个没有问题的不同项目之间运行了一个差异,并且编译器设置或位码等内容存在差异,但似乎没有与此问题相关的内容。

这里发生的事情比你告诉我们的要多。 我尝试了你所描述的,使用导航控制器作为手动嵌入的视图控制器,它工作正常。 如您所见,我们以良好的顺序制作了 Back 动画(为了清晰起见,我启用了慢速动画):

在此处输入图片说明

“不平衡转换”调用听起来很重要,但您没有提供任何信息来发现可能导致它们的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM