我正在通过以下方式推送视图控制器:
[self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];
但动画在中途滞后/暂停了半秒钟。动画未完成。这是gif;
答案 0 :(得分: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];
这是我可以想到的两个可能的问题,只有很少的细节。
永远不要依赖于默认的背景颜色,它在iOS版本中有所变化,并且在控件之间不一致,如果视图是在代码中创建的,或者是从Xib(在相同的iOS版本中)创建的,那么甚至可能会有所不同。
答案 1 :(得分:1)
在应用程序委托中,将窗口的背景色设置为白色。
window?.backgroundColor = .white
还要在推送视图控制器中将其视图设置为白色。
view.backgroundColor = .white
以编程方式将视图控制器嵌入UINavigationController时,遇到了相同的问题。
答案 2 :(得分:0)
虽然将背景颜色设置为suggested by VinceBurn解决了暂停问题,但它使整个动画变为白色,仅在动画结束时淡化实际内容。
对我来说,通过确保内容在-viewDidLoad
中正确调整大小来解决问题。