由于系統(tǒng)默認(rèn)的UITableView的下劃線(xiàn)在自定義的時(shí)候并不方便。系統(tǒng)有一個(gè)方法
tableview setSeparatorInset:inset
1
可以修改分割線(xiàn)的起始和終止位置,但是對(duì)分割線(xiàn)的粗細(xì)和顏色還是無(wú)法隨心所欲的修改。
因此我們通常采用自定義一個(gè)UITableViewCell的方法來(lái)模擬系統(tǒng)提供的分割線(xiàn)。
實(shí)現(xiàn)思路如下:首先創(chuàng)建一個(gè)繼承自UITableViewCell的子類(lèi),并在這個(gè)類(lèi)的view的底部創(chuàng)建一個(gè)UIView,將view的高度設(shè)為很小的數(shù)值,顏色改為黑色(深灰色),從而偽裝成一條線(xiàn)。
最近使用這種方法遇到一個(gè)問(wèn)題,首先是如果一個(gè)cell里面有幾條線(xiàn),可能會(huì)在某種機(jī)型的某個(gè)cell中,出現(xiàn)有的線(xiàn)畫(huà)不出來(lái)的情況。并且在所以機(jī)型上,滑動(dòng)tableview的時(shí)候,自定義的分割線(xiàn)粗細(xì)會(huì)發(fā)生變化,有時(shí)候粗,有時(shí)候會(huì)變細(xì)。
搜遍了stackoverflow也沒(méi)有找到原因所在(英語(yǔ)太渣),嘗試了好久之后大概摸索出了一些。首先,不能為了追求細(xì)線(xiàn)的效果,而把uiview的高度設(shè)置的太小。推薦高度至少是0.5-1左右。
比如可以這樣創(chuàng)建separator:
UIView *separator = [[UIView alloc]initWithFrame:CGRectMake(0? cell.height,cell.width,0.5);
1
如果separator的高度太低,可能造成無(wú)法繪制到屏幕上的bug。同樣的原因,在滑動(dòng)的過(guò)程中,由于UITableView的重繪,也會(huì)造成粗細(xì)上的偏差,其實(shí)這個(gè)偏差在任何時(shí)候都會(huì)存在,只是因?yàn)樽远x的separator太細(xì),導(dǎo)致偏差會(huì)大幅度的影響用戶(hù)的視覺(jué)效果。
沒(méi)有想到有效的解決辦法,不過(guò)總結(jié)了幾點(diǎn)可能改善用戶(hù)體驗(yàn)技巧:
1.不要使用UIView的子類(lèi)(如UIImageView)去繪制separator,這樣會(huì)降低繪制效率。
2*.separator的frame.size.height不能太細(xì),推薦在0.5-1之間,如果覺(jué)得太厚,可以嘗試使用淡色,讓separator看起來(lái)細(xì)一些。
3.嘗試在drawRect方法中繪制細(xì)線(xiàn)。
4.由于cell可以重用,可以嘗試用storyboard來(lái)畫(huà)出某一個(gè)cell,然后重用(僅為猜測(cè),是否能夠提升用戶(hù)體驗(yàn)并沒(méi)有經(jīng)過(guò)測(cè)試)
---------------------
作者:bestswifter
來(lái)源:CSDN
原文:https://blog.csdn.net/abc649395594/article/details/44617767
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!