iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始

新建一个Proj, 将tableViewController的autoAjustScrollViewInset设置为false, 运行


iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始_第1张图片
image.png

表现


iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始_第2张图片
2017-06-25 14_55_04.gif

tableHeaderView是从NavigationBar的底部开始算起的.
Reveal 里面 TableView.frame.origin = .zero

tableHeaderView.frame.origin = .zero

iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始_第3张图片
image.png

图1: tableHeaderView

iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始_第4张图片
image.png

图2: tableView

iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始_第5张图片
image.png

图3: tableView

我们看到前面已经设置了"自动调整scrollViewInset"属性为false, tableView的inset确实是 .zero(图3), 变得是tableView的offset, 而offset的改变就是因为bounds.
图2中看到tableView.bounds.y = -64 ,这相当于在tableView的坐标系中左上角(原点)对于tableView的subviews来讲坐标是{0, -64}, 而tableHeaderView.origon是{0, 0}, 所以向下偏移了64.
至于offset, 这个属性的本质其实是就是更直观的描述bounds的属性, 有兴趣的同学可以去看看ScrollView的实现: https://objccn.io/issue-3-2/

最后用代码实现得时候才发现原来 iOS11 改用这个方法了 泪奔, autoAdjustScrollVeiwInset 已经失效


image.png

你可能感兴趣的:(iOS 11 tableHeaderView 从navigaqtionBar 或者StatusBar下面开始)