1

我有一个定制的UITableViewCell. 这些有以下问题:

  1. 删除按钮太靠右了,与我的背景重叠。我想设置一个插图,让它向左移动一点,然后看起来很棒。

删除按钮重叠

蓝色突出显示的状态跨越整个屏幕宽度,我希望它只是设置在我的弯曲单元格背景的范围内。

高亮状态

有没有办法解决这两个问题?谢谢。

编辑:我的代码如下设置背景(只是一个自定义方法):

- (UIImage *)cellBackgroundForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger rowCount = [self tableView:[self tableView] numberOfRowsInSection:0];
    NSInteger rowIndex = indexPath.row;
    UIImage *background = nil;

    if (rowIndex == 0) {
        background = [UIImage imageNamed:@"cell_top.png"];
    } else if (rowIndex == rowCount - 1) {
        background = [UIImage imageNamed:@"cell_bottom.png"];
    } else {
        background = [UIImage imageNamed:@"cell_middle.png"];
    }

    return background;
}

然后我在一个 void 方法中调用此方法,该reloadTable方法只获取每个单元格并在行更新后对其进行更新(添加或删除一行,因为表有 3 个不同的图像)。在我的 fetched results 控制器从 Core Data 获取我的所有项目并第一次加载表之后,我也会调用它。

编辑2:这是该reloadTable方法的代码:

- (void)refreshTable
{
    for (NSInteger j = 0; j < [self.tableView numberOfSections]; ++j)
    {
        for (NSInteger i = 0; i < [self.tableView numberOfRowsInSection:j]; ++i)
        {
            UIImage *background = [self cellBackgroundForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]];

            UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
            cellBackgroundView.image = background;
            UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]];
            cell.backgroundView = cellBackgroundView;
        }
    }
}

问题是:我不知道如何设置表格视图或表格视图单元格的边距或宽度。我需要子类化一些东西吗?一般是怎么做的?

4

1 回答 1

1

问题是您的表格视图框架宽度,所选单元格的蓝色将填满整个单元格,因此您应该减小表格视图的宽度,这样它就会有一些margins这样的delete按钮也会出现一点左。但是当您选择它们​​时,第一个和最后一个单元格仍然会有问题,因为它们具有圆角,但蓝色选择不会有圆角,所以我建议您应该为选定状态创建一个 .png 图像(一个第一个单元格,一个用于中间单元格,一个用于底部单元格)

编辑

在 iOSmargins中不存在 的概念,我只是使用该术语,因为我认为它会更容易理解,但在这里你必须做些什么来在表格视图的左右显示一点空间:

yourTableView.frame = CGRectMake(leftMarginSpace,
                                 0,
                                 self.view.frame.size.width 
                                     - leftMarginSpace 
                                     - rightMarginSpace, 
                                 self.view.frame.size.height);

因此,如果您将表格视图添加到视图控制器的视图中,则表格视图将位于leftMarginSpace距左侧一定距离的位置,位于视图控制器的顶部(0 y 位置),rightMarginSpace距右侧一定距离,并将具有视图控制器的高度。

如果您将表视图作为子视图添加到另一个视图(不是视图控制器的视图),那么您必须像这样更改框架:

yourTableView.frame = CGRectMake(leftMarginSpace,
                                     0,
                                     parentView.frame.size.width 
                                         - leftMarginSpace 
                                         - rightMarginSpace, 
                                     parentView.frame.size.height);

我还注意到你想创建一个分组的表格视图样式,所以你应该检查grouped table view.

于 2013-05-16T21:44:16.500 回答