切换 ViewControllers 并向下滚动后,导航栏标题从小文本切换到大文本?
Navigation Bar Title switches from Small to Large text after switching ViewControllers and scrolling down?
我刚刚在我的应用程序中发现了这个问题。我根本不想有大标题,所以这是我在 viewDidLoad()
...
中调用的代码
//MARK: - Navigation Bar Setup
func navConAcc() {
let addBarButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addWorkout))
navigationItem.rightBarButtonItem = addBarButton
navigationController!.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(red: 0.4784, green: 0.0863, blue: 0, alpha: 1.0)]
navigationController?.navigationBar.prefersLargeTitles = false
navigationController?.navigationItem.largeTitleDisplayMode = .never
navigationItem.title = "My workouts"
}
如您所见,我将大标题设置为 false,并将显示模式设置为 .never
,因此当此 viewController 首次加载时,标题没有任何问题大小,但是如果我转到下一个 viewController,我将 prefersLargeTitles
设置为 true,然后我随后返回到第一个 viewController 并向下滚动,我的第一个 viewController 出于某种原因切换到 Large。有人可以向我解释为什么会这样吗?
这是因为您将第二个控制器上的导航栏的首选行为设置为较大,并且由于它位于同一导航堆栈中而得以保留。将此代码添加到您的第一个视图控制器以解决此问题:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
我刚刚在我的应用程序中发现了这个问题。我根本不想有大标题,所以这是我在 viewDidLoad()
...
//MARK: - Navigation Bar Setup
func navConAcc() {
let addBarButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addWorkout))
navigationItem.rightBarButtonItem = addBarButton
navigationController!.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor(red: 0.4784, green: 0.0863, blue: 0, alpha: 1.0)]
navigationController?.navigationBar.prefersLargeTitles = false
navigationController?.navigationItem.largeTitleDisplayMode = .never
navigationItem.title = "My workouts"
}
如您所见,我将大标题设置为 false,并将显示模式设置为 .never
,因此当此 viewController 首次加载时,标题没有任何问题大小,但是如果我转到下一个 viewController,我将 prefersLargeTitles
设置为 true,然后我随后返回到第一个 viewController 并向下滚动,我的第一个 viewController 出于某种原因切换到 Large。有人可以向我解释为什么会这样吗?
这是因为您将第二个控制器上的导航栏的首选行为设置为较大,并且由于它位于同一导航堆栈中而得以保留。将此代码添加到您的第一个视图控制器以解决此问题:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}