永发信息网

UITableView每个cell之间的默认分割线怎么去掉

答案:2  悬赏:50  手机版
解决时间 2021-11-10 14:53
  • 提问者网友:你独家记忆
  • 2021-11-10 00:53
UITableView每个cell之间的默认分割线怎么去掉
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-11-10 02:08
alt

在网上找了集中方法,都不好使,比如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类型创建的UITableView,背景颜色需要使用上面两个方法设置的才能生效,普通的backgroundcolor方法无效。
同时由于UITableViewStyleGrouped模式默认会有Section高度,所以,要继承下heightForHeaderInSection方法,记住在UITableViewStyleGrouped,直接修改sectionHeaderHeight的方式是不行的。
全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-11-10 03:43
第一种方法

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类型创建的UITableView,背景颜色需要使用上面两个方法设置的才能生效,普通的backgroundcolor方法无效。
同时由于UITableViewStyleGrouped模式默认会有Section高度,所以,要继承下heightForHeaderInSection方法,记住在UITableViewStyleGrouped,直接修改sectionHeaderHeight的方式是不行的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯