我有一个内置在导航控制器中的普通视图控制器。在此视图控制器中,我有一个使用安全区域约束的表视图。 (我不使用表视图控制器)
导航控制器设置为偏好大标题,并且模式设置为.always。在beta 2中,这种方法效果很好,因此当我进入标题时,标题变大了;当我向下滚动时,标题变小了(就像普通的一样)。但是从beta 3开始,它不再起作用。
任何人都知道如何重新打开它,或者如何使它重新打开,因此当我滚动表格视图时,它会变小。喜欢所有新的iOS 11应用程序的行为吗?
或者这是swift 4 / iOS 11当前版本中的错误,但是像Messenger和设置这样的应用程序仍然可以这种方式工作。
提前感谢。
对我来说,如果将情节提要中的布尔值“ Prefers Large Titles”设置为true,它将保持很大,如果通过代码将其打开,它将按预期工作!
我在此网站上找到了解决方法基本上,如果tableView(或具有滚动的元素)不是视图层次结构中的第一个视图,则大标题将无法自动隐藏。
Example that will NOT workExample that will work
https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/
我在视图上添加的内容将出现:
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
} else {
// Fallback on earlier versions
}
(void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.contentOffset.y > 0) { //20
[self.navigationController.navigationBar setPrefersLargeTitles:NO];
} else {
[self.navigationController.navigationBar setPrefersLargeTitles:YES];
}
}
在IB中的导航栏中选中“ 喜欢大标题”,或使用:
navigationController?.navigationBar.prefersLargeTitles = true
我正在使用程序化布局,并且遇到了类似的标题较大的问题。我在这里找到了解决方案:https://stackoverflow.com/a/46692583/131378。在viewDidLoad()
中,我不得不重新打开largeTitleDisplayMode
。这是正确的组合,使大标题可以滚动:
self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always