0代碼隱藏GroupedTableView上邊多余的間隔
實現(xiàn)諸如支付寶的 “探索” 頁面時立轧,最簡單的方案是在 Storyboard 中來一個靜態(tài) Grouped UITableViewController咐蝇,把各個 Cell 中的元素擺好就行了
不過會有下面的問題,第一個 Section 距離屏幕頂端有間隔
一行代碼搞定
研究發(fā)現(xiàn),這里其實是一個被 UITableView 默認(rèn)填充的 HeaderView。而且,當(dāng)試圖將它的高度設(shè)置為 0 時捌臊,完全不起效果。但我們用下面的代碼創(chuàng)建一個高度特別小的 HeaderView 時兜材,上面的邊距就不見了:
CGFLOAT_MIN 這個宏表示 CGFloat 能代表的最接近 0 的浮點數(shù)理澎,64 位下大概是 0.00(300左右個)0225 這個樣子
這樣寫單純的為了避免一個魔法數(shù)字,這里用 0.1 效果是一樣的曙寡,后面再講糠爬。
在 Storyboard 中 0 代碼搞定
沒用 Storyboard 的同學(xué)使用上面的代碼就 OK 了; 而在 Storyboard 中可以 0 代碼搞定這個事:
首先举庶,在第一個 Section 的上面拖進(jìn)來一個空 UIView
然后選中這個 UIView 的 Runtime Attributes 欄执隧,添加一個 frame 的 KeyPath
這樣頭部的間隔就乖乖的不見了:
刨根問底 UITableViewHeader 的貓膩
為什么剛才說 0.1 和 CGFLOAT_MIN 是等效的呢?經(jīng)過研究,這個高度值的影響大概是這樣的:
若傳入的 height == 0殴玛,則 height 被設(shè)置成默認(rèn)值
若 height 小于屏幕半像素對應(yīng)的高度捅膘,這個 header 不在另一個像素渲染
半像素也就是 1.0 / scale / 2.0,如在 @2x 屏上是 0.25
直觀的感受下滚粟,假如這個 height 被設(shè)置成 0.5 的樣子:
身患強迫癥的我是絕對不能容忍導(dǎo)航欄下面的陰影線看上去寬了 0.5 像素的寻仗,Done。
本文轉(zhuǎn)載自http://blog.sunnyxx.com/2015/04/15/ios-hide-grouped-tableview-header/
作者:新浪微博@我就叫Sunny怎么了