我正在处理包含UITableView的应用程序。用户唯一需要的是重新排序UITableView的内容。在编辑模式下,tableview单元格的背景颜色变为透明。在重新排序时,有没有办法保持tableview单元格的原始背景颜色?
解决方案:
经过几次额外搜索后,我找到了(简单)解决方案。 通过将cell.backgroundView.backgroundcolor添加到willDisplayCell方法,问题得以解决。
答案 0 :(得分:6)
iOS UI框架将使您的单元格透明,有各种各样的场景。其中一个是突出显示/选定状态,另一个是重新排序的情况。
重要的是要了解系统是如何做到的。系统会隐藏单元格背景(cell.backgroundView
或cell.selectedBackgroundView
),并且对于单元格中的每个视图,它将backgroundColor
设置为透明色。因此,无法使用backgroundColor
来保持单元格不透明。
最简单的解决方案是添加一个简单的UIView
drawRect:
,用@interface MyColoredView : UIView
@property (nonatomic, strong, readwrite) UIColor *color;
@end
@implementation MyColoredView
- (void)setColor:(UIColor *)color {
_color = color;
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
[self.color set];
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), true);
CGContextFillRect(UIGraphicsGetCurrentContext(), self.bounds);
}
@end
填充单元格。
contentView
将其添加到您的单元格(可能不是{{1}},而是直接添加到单元格)并设置其框架以匹配单元格的边界。
答案 1 :(得分:-1)
说你的细胞颜色是红色
[cell setBackgroundColor:[UIColor redColor]];
然后将tableview背景设置为相同。
tableView.backgroundColor = [UIColor redColor];