UITableView去掉最后分割线的一种方法
2014-04-24 20:23
375 查看
UITableView以style:UITableViewStylePlain方式创建时,只要有cell,就会有一条黑线 哪怕至于一个cell也会有,如图
在网上找了集中方法,都不好使,比如http://blog.csdn.net/l_ch_g/article/details/9290727,中的两种方法,都尝试不好使第一种方法 1、加方法-(void)setExtraCellLineHidden: (UITableView *)tableView
{
UIView *view = [UIView new];
view.backgroundColor = [UIColor clearColor];
[tableView setTableFooterView:view];
[view release];
} 2、在- (void)viewDidLoad{ [super viewDidLoad]; //设置tableView不能滚动 [self.tableView setScrollEnabled:NO]; //在此处调用一下就可以啦 :此处假设tableView的name叫:tableView [self setExtraCellLineHidden:self.tableView];} 在iOS4.3和iOS5.0中通过:值得注意的是在iOS4.3中可以直接设置footer为nil,但是在5.0不行,因为UITableView会默认生成一个Footer。(详见iOS Release Notes中的说明:Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.)plain类型的tableview当显示的数据很少时,下面的cell即使不显示数据也会有分割线,可以通过下面这个函数去掉多余的分割线。 - (void)setExtraCellLineHidden: (UITableView *)tableView{ UIView *view =[ [UIView alloc]init]; view.backgroundColor = [UIColor clearColor]; [tableView setTableFooterView:view]; [view release];}当tableview的dataSource为空时,也就是没有数据可显示时,该方法无效,只能在numberOfRowsInsection函数,通过判断dataSouce的数据个数,如果为零可以将tableview的separatorStyle设置为UITableViewCellSeparatorStyleNone去掉分割线,然后在大于零时将其设置为UITableViewCellSeparatorStyleSingleLine 第二种方法
使用UITableViewStyleGrouped类型创建的UITableView,背景颜色需要使用上面两个方法设置的才能生效,普通的backgroundcolor方法无效。
同时由于UITableViewStyleGrouped模式默认会有Section高度,所以,要继承下heightForHeaderInSection方法,记住在UITableViewStyleGrouped,直接修改sectionHeaderHeight的方式是不行的。-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
// This will create a "invisible" footer
return 0.01f;
}
在网上找了集中方法,都不好使,比如http://blog.csdn.net/l_ch_g/article/details/9290727,中的两种方法,都尝试不好使第一种方法 1、加方法-(void)setExtraCellLineHidden: (UITableView *)tableView
{
UIView *view = [UIView new];
view.backgroundColor = [UIColor clearColor];
[tableView setTableFooterView:view];
[view release];
} 2、在- (void)viewDidLoad{ [super viewDidLoad]; //设置tableView不能滚动 [self.tableView setScrollEnabled:NO]; //在此处调用一下就可以啦 :此处假设tableView的name叫:tableView [self setExtraCellLineHidden:self.tableView];} 在iOS4.3和iOS5.0中通过:值得注意的是在iOS4.3中可以直接设置footer为nil,但是在5.0不行,因为UITableView会默认生成一个Footer。(详见iOS Release Notes中的说明:Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.)plain类型的tableview当显示的数据很少时,下面的cell即使不显示数据也会有分割线,可以通过下面这个函数去掉多余的分割线。 - (void)setExtraCellLineHidden: (UITableView *)tableView{ UIView *view =[ [UIView alloc]init]; view.backgroundColor = [UIColor clearColor]; [tableView setTableFooterView:view]; [view release];}当tableview的dataSource为空时,也就是没有数据可显示时,该方法无效,只能在numberOfRowsInsection函数,通过判断dataSouce的数据个数,如果为零可以将tableview的separatorStyle设置为UITableViewCellSeparatorStyleNone去掉分割线,然后在大于零时将其设置为UITableViewCellSeparatorStyleSingleLine 第二种方法
if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; // Drawing our own separatorLine here because I need to turn it off for the // last row. I can only do that on the tableView and on on specific cells. // The y position below has to be 1 less than the cell height to keep it from // disappearing when the tableView is scrolled. UIImageView *separatorLine = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, cell.frame.size.height - 1.0f, cell.frame.size.width, 1.0f)]; separatorLine.image = [[UIImage imageNamed:@"grayDot"] stretchableImageWithLeftCapWidth:1 topCapHeight:0]; separatorLine.tag = 4; [cell.contentView addSubview:separatorLine]; [separatorLine release]; } // Setup default cell setttings. ... UIImageView *separatorLine = (UIImageView *)[cell viewWithTag:4]; separatorLine.hidden = NO; ... // In the cell I want to hide the line, I just hide it. seperatorLine.hidden = YES; ...In viewDidLoad:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;最后,创建UITableView时,使用style:UITableViewStyleGrouped,方法解决问题,代码如下
1 | self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped]; |
2 |
3 | _tableView.separatorColor = [UIColor clearColor]; |
4 | _tableView.backgroundView=[[UIView alloc] init]; //改变表的背景视图 |
5 | _tableView.backgroundColor = [UIColor whiteColor]; //添加颜色 |
同时由于UITableViewStyleGrouped模式默认会有Section高度,所以,要继承下heightForHeaderInSection方法,记住在UITableViewStyleGrouped,直接修改sectionHeaderHeight的方式是不行的。-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
// This will create a "invisible" footer
return 0.01f;
}
相关文章推荐
- UITableView去掉最后分割线的一种方法
- 常识小结----UITableView 去掉多余的分割线的方法
- 关于UITableView的cell的分割线左边缺失的解决方法
- iOS去掉UITableView分组时上方空白区域的方法
- iOS小技巧-UITableView去除底部多余的分割线方法以及设置分割线风格和颜色
- 去掉UITableView中Group样式cell的边框目前最完美方法
- UITableView 分割线设置 (去掉底部多余的分割线)
- iosiOS开发之UITableView分割线不顶左解决方法
- IOS uitableview中cell的分割线设置距离,并且去掉cell的边框,要不然多了一条细线
- TableView 去掉多余行数、IOS最后一行Cell系统分割线顶头
- IOS8.1中UITableView默认分割线左边补全方法
- UITableView当数据很少的时候,去掉多余的cell分割线
- iOS-UItableview 分割线(自定义+原生)方法总结
- IOS UItableView得group风格如何去掉分割线问题
- iOS隐藏UITableView多余分割线快速处理方法
- <转>UITableView当数据很少的时候,去掉多余的cell分割线
- UITableView 去掉背景 分割线
- 小坑:UITableView分组后最后一根分割线不显示
- 一句代码去掉UITableView多余cell分割线
- iOS经典讲解之UITableView 去掉底部多余的行和分割线