1

我有一张桌子。在表格的每个单元格中,我创建了一个简单的条形图(只有 2 个填充背景的 UIView)。

我已将 cell.selectedBackgroundView 设置为图像。

当单元格被选中时,它似乎覆盖了条形图的一部分。有谁知道为什么?

红色是选中的单元格。顶部和底部是未选中的单元格: 在此处输入图像描述

图中灰色条、棕色条、2个数字(x.xx)和左边的半透明线,都是1个UIView的子视图。UIView 被添加到单元格中。线和 2 个数字仍然存在,但 2 个条已消失。

这是一些代码:

单元格选择的图像集如下:

UIImage *selectedRowImage = [UIImage imageNamed:@"table-selectedcellbg-red-45px-stretch.png"];
cell.selectedBackgroundView = [[UIImageView alloc]initWithImage:[selectedRowImage resizableImageWithCapInsets:UIEdgeInsetsMake(selectedRowImage.size.height, selectedRowImage.size.width/2, selectedRowImage.size.height, selectedRowImage.size.width/2)]];
[cell sendSubviewToBack:cell.selectedBackgroundView]; // This didn't make a difference

像这样添加视图集:

UIView *graph = [barGraph getGraph];
UIView *graphView = [[UIView alloc]initWithFrame:CGRectMake(150, (tableView.rowHeight - graph.frame.size.height)/2, graph.frame.size.width, graph.frame.size.height)];
[graphView addSubview:graph];
[cell addSubview:graphView];

有任何想法吗?

4

1 回答 1

3

我认为答案可以在UITableViewClass Reference中找到:

选定的背景视图

...

讨论

默认值nil用于普通样式表 ( UITableViewStylePlain) 中的单元格和非nil节组表 ( UITableViewStyleGrouped) 中的单元格。UITableViewCelladds the value of this property as a subview only when the cell is selected. 如果它不是 nil 或在所有其他视图之后,它会将选定的背景视图添加为背景视图 ( backgroundView ) 正上方的子视图。 调用 setSelected:animated: 会导致选定的背景视图以 alpha 淡入淡出动画。

似乎selectedBackgroundView只有backgroundView在单元格的相应属性不是时才能正常工作nil

尝试添加backgroundView并再次测试。

希望对您有所帮助。


编辑:

由于这不是解决方案,我试图重现您的问题,但没有成功:backgroundView留在QuestionMarkIcon(像您的视图graphView)..

代码:

- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath {
    //...

    UIImage* selectedRowImage = [UIImage imageNamed: @"strecheableImage.png"];
    cell.selectedBackgroundView = [[UIImageView alloc] initWithImage: [selectedRowImage resizableImageWithCapInsets: UIEdgeInsetsMake(selectedRowImage.size.height, selectedRowImage.size.width/2, selectedRowImage.size.height, selectedRowImage.size.width/2)]];

    UIView* graph = [[QuestionMarkIcon alloc] init];
    UIView* graphView = [[UIView alloc]initWithFrame: CGRectMake(150, (tableView.rowHeight - graph.frame.size.height)/2, graph.frame.size.width, graph.frame.size.height)];
    [graphView addSubview: graph];
    [cell addSubview: graphView];
    // ...
}

这就是我的stretchableImage.png样子: 我的 <code>strecheableImage.png</code>

单元格 1 被选中,但 QuestionMarkIcon(您的图表)保持在前面: 单元格 1:已选中 - QuestionMarkIcon(您的图表)位于前面

对不起,我帮不上忙。

于 2013-06-19T14:39:07.837 回答