UITableView定义分割线

  要自定义tableview的分割线,需要手写代码往UItableviewCell 的contentView中添加视图,控制好添加视图的高度和宽度就可以实现。

  效果图:

  

  第一步:设置cell,设置的方式有xib,tableview动态原型方式,还有就是手写代码方式,在这使用动态原型,参考cell的创建方式随笔.

  自定义cell类:

@interface HJTableViewCell : UITableViewCell

@property (nonatomic,strong) HJContact *contact;

+ (instancetype)tableViewCell:(UITableView *)tableView;

@end
@interface HJTableViewCell()
// 表格分割线视图
@property (nonatomic,weak) UIView *separatorView;

@end

@implementation HJTableViewCell

+ (instancetype)tableViewCell:(UITableView *)tableView{
#warning 先从换成池中取,如果缓存池中没有可循环利用的cell,先去storyboard中找合适的cell ,cell是从storyboard中创建出来的,而不是手写代码方式alloc出来的
    // 此标识要和storyboard 本控制器中的动态cell设置的identify标识一致
    static NSString *ID = @"contactCell";
    return [tableView dequeueReusableCellWithIdentifier:ID];
}

/**
 *  如果cell是通过storyboard或者xib创建的,就不可能会调用这个方法来初始化cell
 *  如果cell是通过手写代码创建,才会调用这个方法来初始化cell
 */
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    if (self == [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

    }
    return self;
}

/**
 *  如果cell是通过storyboard或者xib创建的,就会调用这个方法来初始化cell
 *  这个方法的作用类似于init方法
 */
- (void)awakeFromNib {
    NSLog(@"%s",__func__);
    // Initialization code
    // 自定义表格分割线
    UIView *separatorView = [[UIView alloc] init];
#warning 添加至cell的内容视图中
    [self.contentView addSubview:separatorView];

    self.separatorView = separatorView;

    separatorView.alpha = 0.5;
    separatorView.backgroundColor = [UIColor redColor];

}

/**
 *  在这个方法中设置子控件的frame
 *  在此方法中进行设置frame 因为在此方法中获取到得self.frame才是最准确的,因为tableView可能
 *  设置了行高等等 etc...
 *
 */
- (void)layoutSubviews{
    NSLog(@"%s",__func__);
#warning 一定得调用父类的方法
    [super layoutSubviews];
    CGFloat x = 10;
    CGFloat y = self.frame.size.height - 1;
    CGFloat w = self.frame.size.width-20;
    CGFloat h = 1;
    self.separatorView.frame = CGRectMake(x, y, w, h);
}

- (void)setContact:(HJContact *)contact{
    self.textLabel.text = contact.name;
#warning 详情默认会显示不了,需要去storyboard动态单元格中设置 style为right Detail
    self.detailTextLabel.text = contact.tel;
}

  修改tableview默认分割线为none

// 此方法是在本控制器loadView方法初始化view完毕后系统调用此方法
- (void)viewDidLoad {
    [super viewDidLoad];

    // 设置表格分割线样式
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

#warning 添加至cell的内容视图中

[self.contentView addSubview:separatorView];不然事情就白做了

  cell创建使用:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    HJTableViewCell *cell = [HJTableViewCell tableViewCell:tableView];
    cell.contact = self.contactList[indexPath.row];
    return cell;
}

  

  完成以上步骤后自定义cell分割线完毕.

  

时间: 2024-10-07 00:02:34

UITableView定义分割线的相关文章

iOS学习笔记 15:separatorInset设置UITableView的分割线无效的问题

一.问题描述 UITableView分割线要显示到最左端 查看UITableView的属性,发现设置separatorInset的值可以自定义分割线的位置. @property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators 打印separatorInset,其默

iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)

有好几个朋友问我ios 分割线端了一些 如何解决,于是我就写一篇博客吧.为什么我说是少了15像素呢?首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器)我们可以找到一个 Separator Insetss 标签 默认是 Default我们选择一下 发现有个Custom 这时候我们惊奇的发现Left 15 ,这时候我们只要把这个 15 改成 0 , 然后保存, 你就会发现tableview 的分割线跟以前一样了. 有些朋友问了如果是代码写的tabl

iOS 8 UITableView 的分割线左对齐

1. 解决UITableView分割线距左边有距离的问题 我们在使用tableview时会发现分割线的左边会短一些,通常可以使用setSeparatorInset:UIEdgeInsetsZero 来解决.但是升级到XCode6之后,在iOS8里发现没有效果.下面给出解决办法: viewDidLoad方法和willDisplayCell中加上如下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {

UITableView的分割线不满屏的解决方法

#pragma -mark 以下2个方法,解决分割线不满屏问题 -(void)viewDidLayoutSubviews { if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { [tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { [t

UITableViewCell自定义分割线

产品设计今天要求cell的分割线不能是整个屏幕的长度,这时候我们有两种方法可以解决 方法一就是自己写一个label放在cell上 方法二就是自定义一个分割线,方法如下 首先我们要去掉cell默认的分割线,设为none [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 然后实现- (void)drawRect:(CGRect)rect方法 - (void)drawRect:(CGRect)rect{ //首先

TableViewCell的分割线显示不完全处理方法

1.加方法,隐藏分割线 - (void)viewDidLoad { [super viewDidLoad]; //设置tableView不能滚动 [self.tableView setScrollEnabled:NO]; //在此处调用一下就可以啦 :此处假设tableView的name叫:tableView [self setExtraCellLineHidden:self.tableView]; } -(void)setExtraCellLineHidden: (UITableView *)

Android应用性能优化系列视图篇——恼人的分割线留白解决之道

相信很多一线的开发者都遇到过分割线,作为视觉设计中的最常用的元素之一,虽然简单易画,但在布局排版中往往却起影响视图层级结构的重要作用.往往由于一道小小的分割线,不仅在layout中多个数个视图,而且容易导致布局层级的加深,甚至还需要在Java代码中做逻辑控制. 虽然Android官方提供的布局中,比如ListView.LinearLayout等对分割线都有了相应的实现,但是在处理分割线留白这种设计时常常有心无力.而在越来越多的APP中,分割线留白已经成为了一种设计趋势,所以,如何简单高效地实现分

iOS开发-UITableView滑动视差

视差滚动是指让多层背景以不同的速度移动,形成立体的运动效果,在Web上应用的比较多,App中倒是见的相对比较少,主要在UITableView中的应用的比较多,尤其是当整个UITableViewCell的背景是图片的时候,描述内容较少,滑动视差可以增强视觉效果,可以考虑使用,先来简单的看一下效果: 实现起来也比较简单,UITableView定义: #pragma mark - UITablViewDataSource -(NSInteger)numberOfSectionsInTableView:

TableViewCell自定义分割线

产品设计的要求cell的分割线长度不用是整个屏幕宽,并且设计要求分割线为2px(两条),上下不同色. 实现如下: UITableView中将分割线样式改为None [java] view plain copy tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 自定义UITableViewCell中复写- (void)drawRect:(CGRect)rect方法 [java] view plain copy - (void