初始界面调用 setViewControllers 黑屏一下
时间: 2023-12-26 19:06:25 浏览: 96
初始界面调用 setViewControllers 方法出现黑屏的问题,可能是因为在切换视图控制器时,新的视图控制器的 view 还没有被完全加载出来,而旧的视图控制器的 view 又已经被移除了,导致出现了黑屏的现象。
为了避免这个问题,在切换视图控制器之前,我们可以先将新的视图控制器的 view 添加到视图层级中,然后再调用 setViewControllers 方法切换视图控制器,这样就可以避免出现黑屏的问题。
另外,如果您在使用 setViewControllers 方法时,需要同时设置 animated 参数为 true,那么建议您在新的视图控制器的 viewWillAppear 方法中执行需要进行的动画操作,这样可以保证动画效果更加流畅。
示例代码如下:
```swift
let newViewController = UIViewController()
self.addChild(newViewController)
self.view.addSubview(newViewController.view)
newViewController.didMove(toParent: self)
UIView.animate(withDuration: 0.3) {
// 执行动画操作
}
self.setViewControllers([newViewController], animated: true)
```
上面的代码先创建一个新的视图控制器 newViewController,然后将其添加到当前视图控制器的子视图中,并调用 didMove(toParent:) 方法将 newViewController 添加到当前视图控制器中。
接下来,在新的视图控制器的 viewWillAppear 方法中,我们可以执行需要进行的动画操作,例如淡入淡出等。
最后,调用 setViewControllers 方法切换视图控制器,并设置 animated 参数为 true。
希望以上内容对您有所帮助。如有其它问题,请随时向我提问。
阅读全文
相关推荐












