ton*_*k12 9 uinavigationbar uinavigationcontroller ios uiappearance swift
在iOS 11中,我正在更改导航控制器的后退按钮,如下所示:
UINavigationBar.appearance().backIndicatorImage = whiteBackButtonImage!.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = whiteBackButtonImage!.withRenderingMode(.alwaysOriginal)
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,问题是当我想区分两种使用不同背面图像的UINavigationControllers:
let whiteNavigationBarAppearance = UINavigationBar.appearance(whenContainedInInstancesOf: [WhiteNavigationController.self])
whiteNavigationBarAppearance.backIndicatorImage = greenBackButtonImage!.withRenderingMode(.alwaysOriginal)
whiteNavigationBarAppearance.backIndicatorTransitionMaskImage = greenBackButtonImage!.withRenderingMode(.alwaysOriginal)
let greenNavigationBarAppearance = UINavigationBar.appearance(whenContainedInInstancesOf: [GreenNavigationController.self])
greenNavigationBarAppearance.backIndicatorImage = whiteBackButtonImage!.withRenderingMode(.alwaysOriginal)
greenNavigationBarAppearance.backIndicatorTransitionMaskImage = whiteBackButtonImage!.withRenderingMode(.alwaysOriginal)
Run Code Online (Sandbox Code Playgroud)
使用第二种方法,会显示常规后退按钮,因此无论如何它都无法识别更改.有谁知道我的方法有什么问题?
我在业余项目中重新创建了您的场景,并且您提供的代码片段工作得很好。我认为您的视图控制器层次结构中可能有一些东西。
这就是我构建层次结构的方式。ViewController
有一个按钮可以推动UIViewController
导航堆栈上的另一个按钮。
let redViewController = ViewController()
redViewController.view.backgroundColor = .red
let greenViewController = ViewController()
greenViewController.view.backgroundColor = .green
let red = RedNavigationController(rootViewController: redViewController)
red.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1)
let green = GreenNavigationController(rootViewController: greenViewController)
green.tabBarItem = UITabBarItem(tabBarSystemItem: .contacts, tag: 2)
let tabBarController = UITabBarController()
tabBarController.setViewControllers([red, green], animated: false)
tabBarController.selectedIndex = 0
Run Code Online (Sandbox Code Playgroud)
这就是我设置外观的方式。
let image1 = UIImage(named: "Button")!.withRenderingMode(.alwaysOriginal)
let image2 = UIImage(named: "Button2")!.withRenderingMode(.alwaysOriginal)
let red = UINavigationBar.appearance(whenContainedInInstancesOf: [RedNavigationController.self])
red.backIndicatorImage = image1
red.backIndicatorTransitionMaskImage = image1
let green = UINavigationBar.appearance(whenContainedInInstancesOf: [GreenNavigationController.self])
green.backIndicatorImage = image2
green.backIndicatorTransitionMaskImage = image2
Run Code Online (Sandbox Code Playgroud)
这就是结果
归档时间: |
|
查看次数: |
275 次 |
最近记录: |