2012-04-21 66 views
1

我有一个分组样式的UITableView。在tableView中,我将行排列成段,因为段的行数是可变的。但是,我选择将所有部分放在一起(出于UI原因),以使它们看起来像一个具有多个(可展开)行的大部分。UITableViewCell选择区 - 如何填充整个单元格的UITableView分组的顶部/底部单元?

我遇到的问题是,我想在每个部分的顶部和底部行选择区域填满整个细胞 - 换句话说,不要有圆角。

我知道,一个普通的tableview有细胞充分的选择,但我可以从分组的tableview到普通的tableview因为有其他不良后果不会改变。

我明白如何掩盖单元格的selectedBackground以使其具有圆角(如果它尚未具有它们),但我一直未能找到一种方法来“顶住”顶部和底部单元格的角部分。我为每个部分的底部行创建了虚拟行,虽然它很乏味,但似乎可行;但是我不能为顶行做一个虚拟行,因为它会使分隔线太厚。

是否有可能在分组的UITableView中“顶部”/“底部”部分行的选择区域?

编辑补充解答: 下面的代码与我的自定义背景视图工作:

cell.selectedBackgroundView.bounds = cell.bounds; 

无论各部分的顶部或底部电池的“形状”,如由自定义背景图中确定,选择样式使用上面的代码与“形状”匹配。这并不一定会摆脱本身的圆角,但如果我将某个部分的顶部或底部单元格设置为“中间样式”单元格背景视图(无角),则会根据需要选择整个单元格。

回答

0

可能有点晚了,但这里是我做过什么:

首先根据需要设置你的背景图,然后设置单元格选择背景图(以相同的边界单元格背景为)

您可以指定cornerRadius属性,这样就可以根据需要设置磨圆棱角,我已经在我的情况

这里省略这个属性的代码都:

 UIView *bg = [[UIView alloc] initWithFrame:cell.bounds]; 
     bg.backgroundColor = [UIColor colorWithRed:0.980 green:0.988 blue:0.984 alpha:1]; 
     bg.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor; 
     bg.layer.borderWidth = kCellBorderWidth; 
//  bg.layer.cornerRadius= kCellBorderRadius; 
     cell.backgroundView = bg; 

     // to make cell selection square and not round (which is by default) 
     UIView *bg_selected = [[UIView alloc] initWithFrame:cell.bounds]; 
     bg_selected.backgroundColor = [UIColor lightGrayColor]; 
     bg_selected.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor; 
     bg_selected.layer.borderWidth = kCellBorderWidth; 
     cell.selectedBackgroundView = bg_selected; 
1

将QuartzCore框架导入到您的项目中。 #进口到您的tableViewController和使用下面的代码...

>>>编辑..

myTableView.layer.cornerRadius=0.0; 

//或使用您的tableView:的cellForRowAtIndexPath:

cell.backgroundView = [[[UIView alloc] initWithFrame:cell.bounds] autorelease]; 

Square corner tableview

Sample code and tutorial for Square corner in grouped tableview

希望,这将帮助你......

+1

感谢您的回答,但这并没有改变任何东西,只要选择。但请欣赏答案。 – SAHM 2012-04-21 02:03:45

+0

我编辑了我的答案..看看是否会帮助你...享受.. – Nit 2012-04-21 02:11:23

+0

我试过你编辑的答案,并没有改变单元格的selectedBackground区域。此外,我检查了链接,似乎他正在添加圆角而不是删除它们;我可以用蒙版移除圆角,但不知道如何将缺失的角部添加回来。 – SAHM 2012-04-21 02:13:12

0

您可能能够创建一个自定义的UITableViewCell,设置它,使它不夹子视图,并覆盖“的setSelected:动画”单元格的方法来显示您自己的选择区域。这是我能想到的唯一的事情。为什么你不能使用普通的UITableView?

+0

@Michael_Frederick我有几个原因不能使用普通的tableview,但我现在能想到的主要原因是分隔线超出了分组tableview的范围,为了摆脱它们,我会需要将separatorStyle设置为none,实际上我需要有一个分隔符样式。我知道我可以使用自定义绘制的selectedBackgroundView - 我使用的是自定义绘制的selectedBackground - 但就性能和试图保持标准选择样式而言,我希望尽可能填充整个单元格。 – SAHM 2012-04-21 02:07:48

相关问题