UITableViewCell的分割線|多種方式

2016年8月7日

UITabViewCell自定義分割線

在UITableView的使用中,通常需要設(shè)置分割線暮芭。但是分割線會(huì)經(jīng)常短一截的情況想鹰,針對(duì)這個(gè)情況,有三種方式可以解決。

1 自定義UIView充當(dāng)分割線

實(shí)現(xiàn)原理德召,自定義CMTableViewCell繼承自UITableViewCell白魂,使用懶加載創(chuàng)建高度為1的UIView,重寫(xiě)layoutSubViews布局UIView的位置。

自定義cell的.m文件

@interface CMTableViewCell ()

@property(nonatomic,weak) UIView *separatorView;

@end

@implementation CMTableViewCell

//使用懶加載創(chuàng)建分割線view,保證一個(gè)cell只有一條
-(UIView *)separatorView
{
    if (_separatorView == nil) {
        UIView *separatorView = [[UIView alloc]init];
        self.separatorView = separatorView;
        separatorView.backgroundColor = [UIColor redColor];
        [self addSubview:separatorView];
    }
    return _separatorView;
}

//重寫(xiě)layoutSubViews方法上岗,設(shè)置位置及尺寸
-(void)layoutSubviews
{
    [super layoutSubviews];
    self.separatorView.frame = CGRectMake(0, self.bounds.size.height-1,     self.bounds.size.width, 1);
}

2 修改系統(tǒng)屬性--主要是系統(tǒng)適配

iOS6的時(shí)候cell的分割線是屏幕寬的福荸,但是現(xiàn)在不是了,向右縮進(jìn)了一些距離

iOS7的時(shí)候肴掷,蘋(píng)果對(duì)tableView增加了一個(gè)叫separatorInset的東西敬锐,會(huì)改變分割線的邊距

iOS8,內(nèi)部增加一些自動(dòng)布局的東西呆瞻,我們可以在storyboard添加約束的時(shí)候可以感受到台夺,每次添加約束的時(shí)候,都會(huì)勾掉一個(gè)叫constraint to margins的選項(xiàng)痴脾。--所以這個(gè)我們需要注意

所以颤介,我們可以通過(guò)修改這些屬性得到答案

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //都是針對(duì)tableView來(lái)看
    //1 去除掉自動(dòng)布局添加的邊距
    self.tableView.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0);
    //2 去掉iOS7的separatorInset邊距
    self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);

}


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 20;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];

    }
    cell.textLabel.text = @"haha";
    //去掉cell的自動(dòng)布局添加的邊距
    cell.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0);
    return cell;
}

3 巧妙利用TableView的背景作為分割線---萬(wàn)能方式

這個(gè)方式的巧妙之處在于,保持每個(gè)cell的位置不變赞赖,也就是坐標(biāo)仍然位置系統(tǒng)自動(dòng)計(jì)算好的滚朵,調(diào)整cell的高度,讓后邊的tableView露出來(lái)前域,利用tableView的背景色作為分割線辕近。

關(guān)鍵點(diǎn):tableView的cell,在初始化的時(shí)候frame就已經(jīng)全部計(jì)算好了匿垄,當(dāng)cell即將顯示的時(shí)候會(huì)調(diào)用setFrame方法來(lái)給cell賦值亏推,所以,我們就可以重寫(xiě)setFrame方法攔截年堆,修改frame里面的height吞杭,達(dá)到目的。

CMTableViewCell.m文件

- (void)viewDidLoad {
[super viewDidLoad];

    //1 禁用系統(tǒng)自帶的分割線
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    //2 設(shè)置tableView的背景色跟系統(tǒng)自帶的背景色一致 198 198 203
    self.tableView.backgroundColor = [UIColor colorWithRed:198/255.0 green:198/255.0 blue:203/255.0 alpha:1];

    //3 重寫(xiě)cell的setFrame的方法-在自定義cell中設(shè)置
}

CMTableCell.m文件

//3 重寫(xiě)setFrame方法
-(void)setFrame:(CGRect)frame
{
    //只修改高度
    frame.size.height-=1;
    //調(diào)用系統(tǒng)方法設(shè)置
    [super setFrame:frame];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末变丧,一起剝皮案震驚了整個(gè)濱河市芽狗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痒蓬,老刑警劉巖童擎,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異攻晒,居然都是意外死亡顾复,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)鲁捏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芯砸,“玉大人,你說(shuō)我怎么就攤上這事〖偕ィ” “怎么了双揪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)包帚。 經(jīng)常有香客問(wèn)我渔期,道長(zhǎng),這世上最難降的妖魔是什么渴邦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任疯趟,我火速辦了婚禮,結(jié)果婚禮上谋梭,老公的妹妹穿的比我還像新娘信峻。我一直安慰自己,他們只是感情好章蚣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布站欺。 她就那樣靜靜地躺著,像睡著了一般纤垂。 火紅的嫁衣襯著肌膚如雪矾策。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天峭沦,我揣著相機(jī)與錄音贾虽,去河邊找鬼。 笑死吼鱼,一個(gè)胖子當(dāng)著我的面吹牛蓬豁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菇肃,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼地粪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了琐谤?” 一聲冷哼從身側(cè)響起蟆技,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斗忌,沒(méi)想到半個(gè)月后质礼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡织阳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年眶蕉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唧躲。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡造挽,死狀恐怖碱璃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刽宪,我是刑警寧澤厘贼,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布界酒,位于F島的核電站圣拄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毁欣。R本人自食惡果不足惜庇谆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凭疮。 院中可真熱鬧饭耳,春花似錦、人聲如沸执解。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衰腌。三九已至新蟆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間右蕊,已是汗流浹背琼稻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饶囚,地道東北人帕翻。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像萝风,于是被迫代替她去往敵國(guó)和親嘀掸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 歷史 iOS7之前规惰,系統(tǒng)默認(rèn)情況下的tableViewCell之間的分割線是左右兩端與屏幕邊緣之間是沒(méi)有空隙的(分...
    聰明的笨白閱讀 2,143評(píng)論 0 3
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)睬塌、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,120評(píng)論 4 61
  • 有些孩子不愛(ài)哭泣卿拴,不是因?yàn)樗粣?ài)哭衫仑,是因?yàn)榧幢憧蘖艘矝](méi)有用。 有些時(shí)候堕花,小孩子嚎啕大哭文狱,家長(zhǎng)們都會(huì)過(guò)來(lái)哄,給糖吃缘挽。...
    夏至微雪閱讀 833評(píng)論 0 2
  • 今天身體還是很不舒服瞄崇,間歇性的刺痛呻粹。忍著不舒適去上班,真是上帝保佑苏研,今天上班還比較輕松等浊,沒(méi)有太忙!還在我的可承受范...
    小藍(lán)兒閱讀 430評(píng)論 0 0
  • 前一陣子因禽流感的緣故摹蘑,活禽市場(chǎng)的交易被停止了筹燕。超市去了幾次看著那些冰凍雞,實(shí)在是下不了手衅鹿。 終于活禽市場(chǎng)可以交易...
    在水一方含閱讀 651評(píng)論 1 2