【发布时间】:2019-04-10 10:35:15
【问题描述】:
我正在使用带有 UITableView 的普通视图控制器,它嵌入到导航控制器中,导航控制器嵌入到标签栏控制器中:
- 标签栏控制器
- 导航控制器
- 带有 TableView 的 UIViewController
我正在使用带有大标题的 NavBar。当我以通常的方式向上滚动时,带有大标题的导航栏具有正常高度。但是当我触摸状态栏并且 tableView 滚动到顶部时,导航栏会在状态栏和它的标题之间获得额外的空白:
用手指滚动时的正常空间:https://ibb.co/0BWgB0T
触摸状态栏时的额外空间:https://ibb.co/LxFwDKx
唯一有助于避免多余空间的方法如下:
edgesForExtendedLayout = UIRectEdge(rawValue: 0)
但它使 tabBar 变成灰色,而不是应有的白色,而且无论如何似乎是一个非常不正确的解决方案。
有人遇到过同样的问题吗?
【问题讨论】:
-
这是您处理
UITableView时的预期行为。默认情况下,当您在 iOS 中点击状态栏时,表格视图会滚动到顶部。在您设备的设置应用中尝试,您会发现类似的行为。 -
@nayem,是的,我知道 :) 我描述的问题是使用 tableView 的 scrollsToTop(触摸状态栏)会增加导航栏的高度。无论如何我已经找到了解决方案并写在下面
-
这不是问题。相反,您使用的是大型标题导航栏,它占据了增加的高度。当表格视图滚动到顶部时,它会强制导航栏重置为其默认初始状态,这就是您获得增加导航栏高度的原因。正如我在上一条评论中提到的,尝试检查 Settings 应用中的行为,你就会明白我的意思。
标签: swift scroll tableview uinavigationbar