當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
而是直接到小區)添加到您的細胞,並設置它的框架相匹配的單元格的範圍。
感謝您的回覆!我試過你的解決方案,tableviewcells已經從UIView初始化。但是當我將這些方法添加到UIView時沒有任何改變。當我重新排序它們時,它們仍然是透明的。 – BrFreek
如果你做得正確,它們不可能是透明的。請顯示你的代碼。 – Sulthan
我認爲這是因爲顏色是在視圖控制器中聲明並傳遞給單元格的UIView。我會盡量將我的代碼發佈一下。 – BrFreek