【发布时间】:2017-10-19 01:35:19
【问题描述】:
当在iOS 11 中为UINavigationController 的UINavigationBar 使用prefersLargeTitles 时,导航栏会增加高度。我检查过的 iPhone 从 44 增加到 96,但我认为这些数字可能会因设备而异(或者至少我们需要像可以编码一样进行编码)。
我想以编程方式找到“额外”高度 - 显示大标题时添加在传统 UINavigationBar 下方的大标题区域的高度。我可以很容易地找到显示大标题的栏的整个高度,但是有没有办法以编程方式单独找到栏的大标题部分的高度(没有任何硬编码)?
我需要这个的原因是有时我想以编程方式滚动到 UITableView 的顶部,拉下大标题(在“常规高度”导航栏下向上滚动)以便显示,而我需要的内容偏移量是导航栏的额外高度。我可以使用导航栏的总高度,但这会将 UITableView 拉得太低。现在要做到这一点,我需要硬编码如下:
[self.tableView setContentOffset:CGPointMake(0, -52) animated:NO];
【问题讨论】:
-
你不需要知道当前的布局,只要让第一个单元格可见,如果你想滚动到顶部(
scrollToRowAtIndexPath:atScrollPosition:animated:)就足够了。 -
谢谢,我试过了。但是,我的用例要求我滚动到显示大导航标题的位置,而这只滚动到显示顶行的位置。要显示大标题,我需要导航栏的“额外高度” - 显示大标题的区域。我试图想出另一种方法来做到这一点,但在这一点上,我确实相信我需要那个高度。
-
这里有一条黄金法则:如果您的问题的答案是跟踪系统生成的布局边界以调整您自己的布局——您可能提出了错误的问题。
-
@holex 我明白了,这就是为什么我对这个问题感到惊讶。我希望发现这是我当前问题的情况。但是,在这种特殊情况下,到目前为止,我还没有找到任何其他方式来滚动到标题被拉下的确切位置,而不是超过它的顶部 - 这就是我需要发生的事情案例,我不认为这是不合理的。由于更改容器中的视图,我正在滚动以显示大标题。
-
@holex 如何滚动表格视图以显示大标题的顶部?只是好奇,因为我认为我们都同意我错过了一些东西。
标签: ios uinavigationcontroller uinavigationbar ios11 large-title