当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS中tableView cell分割线的一些设置技巧

iOS中tableView cell分割线的一些设置技巧

2019年07月24日  | 移动技术网IT编程  | 我要评论

巴蒂亚·米塔尔,陆昊妻子,生活信息

前言

对于ios的tableview的cell的分割线,一般我们很少使用不是系统默认的,但是有些项目要求还是要求我们去改变分割线的颜色或者外形以配合整个项目的色调。这个苹果公司早都为我们想到了。

一、关于分割线的位置。

分割线的位置就是指分割线相对于tableviewcell.如果我们要根据要求调节其位置,那么在ios7.0版本以后,提供了一个方法如下:

if ([self.tableview respondstoselector:@selector(setseparatorinset:)]) {
  
  [self.tableview setseparatorinset:uiedgeinsetsmake(0, 45, 0, 0)];
  
 }

uiedgeinsets 的四个参数分别是相对于cell的上、左、下、右的距离,都是cgfloat型。

二、分割线的颜色及风格:

a、cell的分割线的颜色不是cell的属性,它属于tableview的separatorcolor属性。这样我们只需要设置属性值就可以得到所有我们想要的颜色的分割线、

[self.tableview setseparatorcolor:[uicolor clearcolor]];

b、cell的风格:它是tableview 的separatorstyle属性,系统给我们提供了三种风格在枚举uitableviewcellseparatorstyle中定义,分别是

typedef ns_enum(nsinteger, uitableviewcellseparatorstyle) {
 uitableviewcellseparatorstylenone,
 uitableviewcellseparatorstylesingleline,
 uitableviewcellseparatorstylesinglelineetched // this separator style is only supported for grouped style table views currently
};

默认的是uitableviewcellseparatorstylesingleline.

三、tableviewcell 分割线自定义

首先要把cell自带的分割线给去掉,使用如下两种都行,一是把颜色设置为clearcolor,二是风格设置为uitableviewcellseparatorstylenone。

自定义cell分割线大致用到的两种方法

a、把自定义的分割线当成一个view放到cell的contentview上,一定要注意重用问题,所以这个view 要在cell初始化的时候添加上。示例代码如下:

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
{
 uitableviewcell *cell = nil;
 cell = [tableview dequeuereusablecellwithidentifier:@"cell"];
 if (cell == nil) {
  cell = [[uitableviewcell alloc]initwithstyle:uitableviewcellstylesubtitle reuseidentifier:@"cell"];
  cell.accessoryview = [[uiimageview alloc]initwithimage:[uiimage imagenamed:@"huicellacce"]];
  cell.backgroundcolor = [uicolor clearcolor];
//  cell.selected = yes;
  uiimageview *imageviewsepe = [[uiimageview alloc]initwithframe:cgrectmake(47, 49, 200, 1)];
  imageviewsepe.image = [uiimage imagenamed:@"godline"];
  [cell.contentview addsubview:imageviewsepe];

 }
}

b、比较复杂,用到了底层的框架,

- (void)drawrect:(cgrect)rect { 
cgcontextref context = uigraphicsgetcurrentcontext(); 
cgcontextsetfillcolorwithcolor(context, [uicolor clearcolor].cgcolor); cgcontextfillrect(context, rect); 

cgcontextsetstrokecolorwithcolor(context, [uicolorcolorwithhexstring:@"ffffff"].cgcolor);
 cgcontextstrokerect(context, cgrectmake(5, -1, rect.size.width - 10, 1)); //下分割线 
cgcontextsetstrokecolorwithcolor(context, [uicolor colorwithhexstring:@"e2e2e2"].cgcolor); 
cgcontextstrokerect(context, cgrectmake(5, rect.size.height, rect.size.width - 10, 1));
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网