gpt4 book ai didi

iOS 13 iPhone 10 和 11 只显示黑色 View 但期待 UITabBarController [ View 层次结构显示它没有高度]

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:41 24 4
gpt4 key购买 nike

所有版本和手机都可以,运行流畅但在 iPhone 11 中一切都变黑了。我没有使用 Storyboard,UI 是用代码制作的,模式是 MVVMC。知道为什么在 iPhone 11 上应用程序变黑了吗?

图片:/image/hnjdG.png

这是 View 层次结构:https://www.dropbox.com/s/e3mzzpwn8iozhc0/Screen%20Shot%202019-10-08%20at%2012.11.18%20PM.png?dl=0

[编辑:请注意该应用程序是在 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

}

在 TabCoordinator.swift 中

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 没有委托(delegate)。看来我真的必须实现 Scenedelegate。

关于iOS 13 iPhone 10 和 11 只显示黑色 View 但期待 UITabBarController [ View 层次结构显示它没有高度],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58127641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com