iOS 11 tableHeaderView 從navigaqtionBar 或者StatusBar下面開始

weixin_33728268發表於2017-06-25

新建一個Proj, 將tableViewController的autoAjustScrollViewInset設定為false, 執行


1388857-4c7493f3cb89a2cd.png
image.png

表現


1388857-d0bff8b1c013f1e4.gif
2017-06-25 14_55_04.gif

tableHeaderView是從NavigationBar的底部開始算起的.
Reveal 裡面 TableView.frame.origin = .zero

tableHeaderView.frame.origin = .zero

1388857-13cc414509f37d7b.png
image.png

圖1: tableHeaderView

1388857-9a591bd27e88fb6c.png
image.png

圖2: tableView

1388857-ec71cf875a112366.png
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 已經失效


1388857-2c0268bc0f6a2f86.png
image.png

相關文章