自从我更新到Xcode8 / iOS10& Swift 3我对用作导航栏标题的分段控件有这个奇怪的问题..它需要一些时间才能出现。或者我可以触摸该区域(当时不可见)并且它将出现。
我认为该项目已加载但尚未绘制,然后通过触摸该区域绘制或者因为事件循环要求查看重绘。
用户界面未被屏蔽。
无法找到修复方法。
PS:无法重现新项目
打破调试视图层次结构,看起来UISegmentedControls存在,但没有使用颜色/文本进行初始化..几秒钟之后就会初始化。
答案 0 :(得分:0)
好的,这是由于线程。
我的加载应用是初始化核心数据堆栈。在它的回调中,我使用window.rootViewController = vc
实例化了正确的视图控制器,这需要在主线程上执行,但核心数据堆栈init的完成是在后台启动的。
奇怪的是。我实现了UIWindow扩展
extension UIWindow {
func setRootViewController(with viewController: UIViewController) {
DispatchQueue.main.async {
self.rootViewController = viewController
}
}
}
// beeing in background thread
self.window.setRootViewController(with: self.rootVC)
这将产生以下问题。
但接下来会有效
extension UIWindow {
func setRootViewController(with viewController: UIViewController) {
self.rootViewController = viewController
}
}
// beeing in background thread
DispatchQueue.main.async {
self.window.setRootViewController(with: self.rootVC)
}
不知道有什么不同。