Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 13 iPhone 10和11仅显示黑色视图,但应为UITabBarController[视图层次结构显示它没有高度]_Ios_Swift_Ios13 - Fatal编程技术网

iOS 13 iPhone 10和11仅显示黑色视图,但应为UITabBarController[视图层次结构显示它没有高度]

iOS 13 iPhone 10和11仅显示黑色视图,但应为UITabBarController[视图层次结构显示它没有高度],ios,swift,ios13,Ios,Swift,Ios13,所有版本和手机都正常,运行平稳,但在iPhone11中,一切都变黑了。我没有使用故事板,UI是用代码制作的,模式是MVC。你知道为什么iPhone11上的应用程序变成了黑色吗 图像: 这是视图层次结构: [编辑:请注意,该应用程序是在XCODE 10.2.1中构建的] rootViewcontroller是TabBarController 在AppDelegate.swift中 var window: UIWindow? private var appCoordinator: AppCoordi

所有版本和手机都正常,运行平稳,但在iPhone11中,一切都变黑了。我没有使用故事板,UI是用代码制作的,模式是MVC。你知道为什么iPhone11上的应用程序变成了黑色吗

图像:

这是视图层次结构:

[编辑:请注意,该应用程序是在XCODE 10.2.1中构建的]

rootViewcontroller是TabBarController

在AppDelegate.swift中

var window: UIWindow?
private var appCoordinator: AppCoordinator!

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    FirebaseApp.configure()

    window = UIWindow()
    appCoordinator = AppCoordinator(window: window!)
    appCoordinator.start{}

    return true
}

func applicationWillTerminate(_ application: UIApplication) {
    //TODO: avoid relogout

}
斯威夫特

enum SectionTab: Int, Menu {
    //case home
    case futures
    case trading
    case wallet
    case account

    func title(languageManager: LanguageManager) -> String {
        switch self {
        //case .home: return languageManager.localizedString("router.home")
        case .futures: return languageManager.localizedString("router.futures")
        case .trading: return languageManager.localizedString("router.spot")
        case .wallet: return languageManager.localizedString("router.wallets")
        case .account: return languageManager.localizedString("router.account")
        }
    }

    var image: UIImage {
        switch self {
        //case .home: return UIImage.init(named: "icTabHome")!
        case .futures: return UIImage.init(named: "icTabFutures")!
        case .trading: return UIImage.init(named: "icTabTrading")!
        case .wallet: return UIImage.init(named: "icTabWallet")!
        case .account: return UIImage.init(named: "icTabAccount")!
        }
    }

    var highlightedImage: UIImage {
        switch self {
        //case .home: return UIImage.init(named: "icTabHomeActive")!
        case .futures: return UIImage.init(named: "icTabFutures")!
        case .trading: return UIImage.init(named: "icTabTradingActive")!
        case .wallet: return UIImage.init(named: "icTabWalletActive")!
        case .account: return UIImage.init(named: "icTabAccountActive")!
        }
    }

}

init(window: UIWindow, dependencies: Dependencies) {
    self.window = window
    self.dependencies = dependencies
}

override func start(completion: @escaping CoordinatorCompletion) {
    super.start(completion: completion)

    let tabbarController = UITabBarController()
    let tabs : [SectionTab] = [.futures, .trading, .wallet, .account]
    let viewControllers = createViewControllers(tabs: tabs)

    tabbarController.viewControllers = viewControllers.map{ $0.viewController }
    tabbarController.view.backgroundColor = .white
    tabbarController.tabBar.tintColor = UIColor.appLightBlue
    tabbarController.tabBar.unselectedItemTintColor = UIColor.appDarkGray

    let notification = Notification.Name.init(LanguageChangedNotification)
    NotificationCenter.default.rx.notification(notification).subscribe({_ in
        tabbarController.viewControllers?.enumerated().forEach({ (arg0) in
            let (offset, vc) = arg0
            vc.tabBarItem.title = tabs[offset].title(languageManager: self.dependencies.languageManager)
        })
    }).disposed(by: disposeBag)

    window.rootViewController = tabbarController
    window.makeKeyAndVisible()
}

private func createViewControllers(tabs: [SectionTab]) -> [(viewController: UIViewController, coordinator: BaseCoordinator)] {
    return tabs.map({ (tab) -> (viewController: UIViewController, coordinator: BaseCoordinator) in
        let viewController: UIViewController

        let coordinator: BaseCoordinator
        switch tab {
        case .futures:
            viewController = BTSENavigationController()
            coordinator = FuturesCoordinator(navigationController: viewController as! BTSENavigationController, dependencies: dependencies)
            coordinate(to: coordinator)
        case .trading:
            viewController = BTSENavigationController()
            coordinator = SpotCoordinator(navigationController: viewController as! BTSENavigationController, dependencies: dependencies)
            coordinate(to: coordinator)
        case .wallet:
            viewController = BTSENavigationController()
            coordinator = WalletCoordinator(navigationController: viewController as! BTSENavigationController, dependencies: dependencies, url: self.dependencies.client.url(for: .wallets))
            coordinate(to: coordinator)
        case .account:
            viewController = BTSENavigationController()
            coordinator = AccountCoordinator(navigationController: viewController as! BTSENavigationController, dependencies: dependencies)
            coordinate(to: coordinator)
        }

        viewController.tabBarItem = UITabBarItem.init(title: tab.title(languageManager: dependencies.languageManager), image: tab.image, selectedImage: tab.highlightedImage)

        return (viewController: viewController, coordinator: coordinator)
    })
}

即使我只是在AppDelegate上执行此操作:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()

        window = UIWindow()
        window.rootViewController = UIViewController() //this should show white screen

        return true
}

应用程序将显示黑屏,因为rootviewController没有委托。似乎我真的必须实现Scenedelegate。

在iOS 13中,您不使用AppDelegate创建窗口,除非您已采取步骤选择不使用场景,否则您将使用Scenedelegate。它在其他设备上有效,但在iPhone 11中无效。其他设备是否运行iOS 13?是的。iOS 13 iPhone 8和席刚做了简单的测试应用程序。我在这个测试应用程序中。在iPhone8或iPhone11模拟器(iOS13)上运行它效果很好。