我通过以下方式推送视图控制器:
[self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];
但是动画在中途滞后/暂停半秒。动画不完整。这是gif;
我通过以下方式推送视图控制器:
[self.navigationController pushViewController:[[UIViewController alloc] init] animated:YES];
但是动画在中途滞后/暂停半秒。动画不完整。这是gif;
如果没有更多细节,我可以想到两个可能的问题。
是否在代码中将阴影添加到将被新 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 版本中)创建的,甚至可能会有所不同。
在应用程序委托中,将窗口的背景颜色设置为白色。
window?.backgroundColor = .white
同样在推送的视图控制器中,将其视图设置为白色。
view.backgroundColor = .white
在以编程方式将视图控制器嵌入 UINavigationController 时,我遇到了同样的问题。
虽然按照VinceBurn 的建议设置背景颜色解决了暂停问题,但它使整个动画变白,只有在动画结束时才会淡入实际内容。
对我来说,问题是通过确保内容大小正确来解决的-viewDidLoad
。