1

我有一个分组样式的 UITableView。在 tableView 中,我将行排列成部分,因为这些部分具有可变数量的行。但是,我选择将所有部分放在一起(出于 UI 原因),这样它们看起来就像一个包含多个(可扩展)行的大部分。

我遇到的问题是我希望每个部分中顶行和底行的选择区域填充整个单元格 - 换句话说,不要有圆角。

我知道一个普通的表格视图可以完全选择单元格,但是我不能从一个分组的表格视图更改为一个普通的表格视图,因为这会产生其他不需要的后果。

我了解如何将单元格的 selectedBackground 遮盖为圆角(如果它还没有圆角),但我无法找到一种方法来“取消”部分顶部和底部单元格的角。我为每个部分的底部行创建了虚拟行,这似乎很有效,尽管它很乏味;但我不能为顶行做一个虚拟行,因为它使分隔线太粗。

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

编辑添加答案:以下代码适用于我的自定义背景视图:

cell.selectedBackgroundView.bounds = cell.bounds;

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

4

3 回答 3

1

将 QuartzCore 框架导入您的项目。#import 到您的 tableViewController 并使用以下代码...

>>>编辑..

myTableView.layer.cornerRadius=0.0;

//或使用您的 tableView:cellForRowAtIndexPath:

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

方角桌景

分组表格视图中方角的示例代码和教程

希望对你有帮助...

于 2012-04-21T02:01:25.617 回答
0

您也许可以创建一个自定义 UITableViewCell,将其设置为不剪切子视图,并覆盖单元格的“setSelected:animated”方法以显示您自己的选择区域。这是我唯一能想到的。为什么不能使用普通的 UITableView?

于 2012-04-21T02:02:36.067 回答
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;
于 2013-09-16T13:56:46.113 回答