15

我通过以下方式推送视图控制器:

[self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];

但是动画在中途滞后/暂停半秒。动画不完整。这是gif;

在此处输入图像描述

4

3 回答 3

52

如果没有更多细节,我可以想到两个可能的问题。

  • 是否在代码中将阴影添加到将被新 ViewController 覆盖的视图中。如果是这种情况,请改用 ShadowPath 或半透明视图(属性 Shadow 在动画时很昂贵,已经做过)

  • 新 ViewController 的 backgroundColor 是 "clearColor" 吗?我见过这种东西出现奇怪的渲染问题。

尝试:

UIViewController *vc = [[UIViewController alloc] init];  
vc.view.backgroundColor = [UIColor whiteColor];  
[self.navigationController pushViewController:vc animated:YES];

这是我能想到的两个可能的问题,但细节很少。


永远不要依赖默认背景颜色,它随 iOS 版本而变化,并且在控件之间不一致,如果视图是用代码或从 Xib(在同一 iOS 版本中)创建的,甚至可能会有所不同。

于 2013-11-12T01:07:02.310 回答
1

在应用程序委托中,将窗口的背景颜色设置为白色。

window?.backgroundColor = .white

同样在推送的视图控制器中,将其视图设置为白色。

view.backgroundColor = .white

在以编程方式将视图控制器嵌入 UINavigationController 时,我遇到了同样的问题。

于 2018-08-05T19:58:06.413 回答
0

虽然按照VinceBurn 的建议设置背景颜色解决了暂停问题,但它使整个动画变白,只有在动画结束时才会淡入实际内容。

对我来说,问题是通过确保内容大小正确来解决的-viewDidLoad

于 2016-03-08T16:39:19.507 回答