UINavigationController pushViewController在中途暂停/冻结

0xS*_*ina 15 cocoa-touch objective-c ios

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

[self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];
Run Code Online (Sandbox Code Playgroud)

但动画在中途滞后/暂停了半秒钟.动画未完成.这是gif;

在此输入图像描述

Vin*_*ier 48

有了更多的细节,我可以想到2个可能的问题.

  • 是否在代码中添加了Shadow,以便新ViewController将覆盖该视图.如果是这种情况,请使用ShadowPath或半透明视图(动画属性Shadow很昂贵,在那里完成了)

  • 新ViewController的backgroundColor是"clearColor"吗?我见过这种奇怪的渲染问题.

尝试:

UIViewController *vc = [[UIViewController alloc] init];  
vc.view.backgroundColor = [UIColor whiteColor];  
[self.navigationController pushViewController:vc animated:YES];
Run Code Online (Sandbox Code Playgroud)

这是我可以想到的两个可能的问题.


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

  • 没有设置背景颜色,所以我猜是'默认'(这是清楚的吗?).无论如何,将呈现的视图控制器更改为whiteColor可以解决问题.谢谢. (11认同)
  • 设置背景颜色也适合我. (4认同)