UITableView是IOS提供的一個(gè)帶有復(fù)用機(jī)制的滾動(dòng)表格,目前的基本功能就是垂直的表格,可以有多個(gè)section,每個(gè)section可以有多個(gè)row,然后還包含有sectionview,footview,headview等等入口可以設(shè)置tableview的樣式。
正常情況下,大家都會(huì)使用復(fù)用機(jī)制,一方面提高運(yùn)行效率,一方面可以節(jié)省內(nèi)存,但是沒(méi)滾動(dòng)的時(shí)候都需要更新每個(gè)cell。如果有興趣的話(huà)可以驗(yàn)證一下,UITableView在創(chuàng)建cell的時(shí)候一般只會(huì)創(chuàng)建一個(gè)屏幕大的cell個(gè)數(shù),或是多一個(gè)。這是很神奇而且很合理的設(shè)計(jì)。實(shí)在是佩服。如果你不使用復(fù)用機(jī)制的話(huà),你會(huì)發(fā)現(xiàn)row number很大的時(shí)候,滾動(dòng)的效率很卡。
UITableView提供了兩種樣式,一種Plain,一個(gè)Group,具體的樣式效果可以通過(guò)編譯運(yùn)行得到。具體效果圖不貼了。由于收到了蘋(píng)果的限制,目前只支持這兩種樣式,Plain的是整個(gè)cell橫跨tableview,而group的邊框會(huì)根據(jù)tableview多大,系統(tǒng)會(huì)自動(dòng)調(diào)整。所以我們想根據(jù)UITableViewCell做一些自定義的cell的時(shí)候,就會(huì)發(fā)現(xiàn)受到系統(tǒng)的限制,有時(shí)候想要的效果可能沒(méi)辦法做到。比如像group的邊框邊距。當(dāng)然可以通過(guò)獲取superview去修改,但是這種做法不推薦。
另外,自定義Cell我們可能會(huì)經(jīng)常用到。通過(guò)繼承UITableViewCell,去實(shí)現(xiàn)一個(gè)自定義樣式的Cell。有時(shí)候我們想要增加一些自定義的橫線(xiàn),如果你通過(guò)addsubview的形式去添加一個(gè)view到cell上的時(shí)候,有時(shí)候你會(huì)發(fā)現(xiàn),在點(diǎn)擊cell的時(shí)候,那個(gè)橫線(xiàn)就沒(méi)有了。通過(guò)研究發(fā)現(xiàn)。原來(lái)在點(diǎn)擊cell的時(shí)候,cell會(huì)把添加在上面的view,只要是空白的,不管是view,label,都是被設(shè)置為透明。導(dǎo)致我們的效果沒(méi)法達(dá)到。后面筆者通過(guò)嘗試找到了下面的方法。剛開(kāi)始就通過(guò)cell上下添加兩條分割線(xiàn),但是最后一個(gè)cell或是第一個(gè),總是會(huì)不完美。后面通過(guò)研究,發(fā)現(xiàn)可以重載
這兩個(gè)函數(shù),在系統(tǒng)執(zhí)行set之后,我們?cè)诤竺嬷噩F(xiàn)把我們的分割線(xiàn)的顏色值重置一下,你會(huì)發(fā)現(xiàn),完美了。一切都正常了。~~~~~~
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注