我有一张桌子。在表格的每个单元格中,我创建了一个简单的条形图(只有2个UIViews,背景填充)。
我已将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];
有什么想法吗?
答案 0 :(得分:3)
我认为答案可以在UITableViewClass Reference:
中找到<强> selectedBackgroundView 强>
...
讨论
普通样式表格中的单元格的默认值为
nil
(UITableViewStylePlain
)和非nil
用于节组表 (UITableViewStyleGrouped
)。UITableViewCell
增加了这个值 仅在选择单元格时将属性作为子视图。 它补充说 选定的背景视图作为背景正上方的子视图 view(backgroundView)如果不是nil,或者在所有其他视图后面。 调用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
的样子:
选择了单元格1,但QuestionMarkIcon(您的图表)保持在前面:
抱歉,我无能为力。