Ios UISegmentedControl作为UINavigationBar标题项在延迟后加载

Ios UISegmentedControl作为UINavigationBar标题项在延迟后加载,ios,swift,xcode,uinavigationbar,uisegmentedcontrol,Ios,Swift,Xcode,Uinavigationbar,Uisegmentedcontrol,自从我更新到Xcode8/iOS10和swift3之后,我就有了一个奇怪的问题,那就是用作导航栏标题的分段控件。。它需要一些时间才能出现。或者我可以触摸该区域(当时不可见),它就会出现 我相信该项目已加载,但只是没有绘制,然后通过触摸该区域或由于事件循环要求查看重画,它得到了绘制 UI未被阻止 找不到解决的办法 PS:无法在新项目上复制 打破调试视图层次结构,它显示UISegmentedControls有效,但未使用颜色/文本初始化。。然后,几秒钟后就会发生 好,这是由于线程造成的 加载时我

自从我更新到Xcode8/iOS10和swift3之后,我就有了一个奇怪的问题,那就是用作导航栏标题的分段控件。。它需要一些时间才能出现。或者我可以触摸该区域(当时不可见),它就会出现

我相信该项目已加载,但只是没有绘制,然后通过触摸该区域或由于事件循环要求查看重画,它得到了绘制

UI未被阻止

找不到解决的办法

PS:无法在新项目上复制

打破调试视图层次结构,它显示UISegmentedControls有效,但未使用颜色/文本初始化。。然后,几秒钟后就会发生


好,这是由于线程造成的

加载时我的应用程序正在初始化核心数据堆栈。在回调时,我正在使用
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)
}

不知道有什么区别。

好的,这是由于线程造成的

加载时我的应用程序正在初始化核心数据堆栈。在回调时,我正在使用
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)
}

不知道有什么区别。

第二个视图是如何绘制的?您在实际设备上测试过这个吗?模拟器(至少对我来说)在试图在GPU上做任何事情时,都会受到严重的性能影响。也许这是你们不应该担心的事情?问题在于模拟器和设备。这个分段控件实际上没有绑定到任何东西。第二个视图是如何绘制的?您在实际设备上测试过这个吗?模拟器(至少对我来说)在试图在GPU上做任何事情时,都会受到严重的性能影响。也许这是你们不应该担心的事情?问题在于模拟器和设备。这个分段控件实际上没有绑定到任何东西