iOS tableView cell的分割线设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wanglei0918/article/details/74531919

一、关于分割线的位置。

分割线的位置就是指分割线相对于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));
 }
阅读更多
换一批

没有更多推荐了,返回首页