iOS 13中没有流行动画

问题描述 投票:0回答:1

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

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

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

我发现很多帖子,当我将导航控制器放在选项卡栏控制器中时(我没有这样做,或者以编程方式推送视图时,我没有这样做)。我检查过viewWillAppearviewDidAppear的每个替代都调用其超类,并且没有不匹配的调用(从super viewDidAppear调用viewWillAppear,反之亦然)。

我不使用情节提要,只是使用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时其他人看到了吗?

UPDATE

为了消除容器视图中的任何问题,我临时更改了应用程序,将导航控制器直接放置在窗口中。所以我现在在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文件和其他没有问题的项目之间进行了比较,并且在编译器设置或位代码等方面存在差异,但似乎与此问题无关。

ios objective-c uinavigationcontroller
1个回答
1
投票

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

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.