当我使用故事板Segue时,屏幕上显示另一个视图控制器是相当流畅的。然而,当我不使用故事板时,只需添加一行简单的navigationController?.pushViewController(UIViewController(), animated: true)
代码,它在过渡中有点滞后。
我也读过Delay when pushing view controller (iOS)。但是即使我正在推动一个全新的视图控制器(内部没有额外的代码),转换仍然有点滞后,你知道吗?
当我使用故事板Segue时,屏幕上显示另一个视图控制器是相当流畅的。然而,当我不使用故事板时,只需添加一行简单的navigationController?.pushViewController(UIViewController(), animated: true)
代码,它在过渡中有点滞后。
我也读过Delay when pushing view controller (iOS)。但是即使我正在推动一个全新的视图控制器(内部没有额外的代码),转换仍然有点滞后,你知道吗?
6条答案
按热度按时间wa7juj8i1#
Swift 5.3,Xcode 12
我也面临着同样的问题,尝试添加到主线程,但显然问题是,我正在推动编程创建的viewController,其backgroundColor为nil。只需将pushedViewController中的颜色设置为其他颜色,就解决了这个问题。
hsvhsicv2#
在app delegate中,将窗口的背景色设置为红色。
同样在推视图控制器中,将其视图设置为红色。
我在以编程方式将视图控制器嵌入UINavigationController时遇到了同样的问题。
wgeznvg73#
我在以编程方式绘制UI时遇到了同样的问题。
在我的例子中,重写loadView函数解决了我的问题。
}
csbfibhn4#
ViewController期望呈现视图,因此在视图下面添加背景颜色或设置标题
e0uiprwp5#
我在模拟器上用慢速动画进行调试。“滞后”是底层的前一个视图控制器的视图,如@yesleon所提到的。当viewWillDisappear时,我将前一个视图的alpha设置为0,当viewWillAppear时,设置为1。现在推到新的控制器似乎好多了,但是推回到原来的视图控制器,还是有点不完美,有更好的解决方案吗?
n7taea2i6#
我遇到了同样的问题,把ui代码和它在
viewDidLoad
中的约束放到loadView()
中来解决它。现在动画正在平滑移动。参考:https://stackoverflow.com/a/3424052/10158398
loadView是实际设置视图的方法(设置所有outlet,包括self。视图)。
viewDidLoad你可以通过它的名字来弄清楚。它是一个委托方法,在视图被加载(所有的插座都被设置好)之后调用,它只是通知控制器它现在可以开始使用插座了。
viewDidLoad:“在视图控制器将其关联的视图加载到内存中后调用此方法。无论视图是存储在nib文件中还是在loadView方法中以编程方式创建,都将调用此方法。“
loadView:“如果您手动创建视图,则必须重写此方法并使用它来创建视图。“
举例: