2014-01-10 73 views
4

我正在處理包含UITableView的應用程序。用戶需要做的唯一事情就是重新排列UITableView的內容。在編輯模式下,tableview單元格的背景顏色變爲透明。當重新排序時,有沒有辦法保持tableview單元格的原始背景顏色?在編輯模式下重新排序時更改UITableViewCell的背景色

解決方案:

後一些額外的搜索,我發現了(簡單的)解決方案。 通過將cell.backgroundView.backgroundcolor添加到willDisplayCell方法中,問題得以解決。

回答

6

當iOS UI框架將使您的單元格透明時,會出現各種情況。其中之一是突出顯示/選擇狀態,另一個是重新排序情況。

重要的是瞭解系統如何去做。系統隱藏單元格背景(cell.backgroundViewcell.selectedBackgroundView),併爲單元格中的每個視圖設置backgroundColor爲透明顏色。因此,不可能使用backgroundColor來保持單元格不透明。

最簡單的解決方法是添加一個簡單的UIViewdrawRect:,它將用一種顏色填充單元格。

@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而是直接到小區)添加到您的細胞,並設置它的框架相匹配的單元格的範圍。

+0

感謝您的回覆!我試過你的解決方案,tableviewcells已經從UIView初始化。但是當我將這些方法添加到UIView時沒有任何改變。當我重新排序它們時,它們仍然是透明的。 – BrFreek

+0

如果你做得正確,它們不可能是透明的。請顯示你的代碼。 – Sulthan

+0

我認爲這是因爲顏色是在視圖控制器中聲明並傳遞給單元格的UIView。我會盡量將我的代碼發佈一下。 – BrFreek

0

說出你的顏色是redcolor

[cell setBackgroundColor:[UIColor redColor]]; 

然後將實現代碼如下背景相同。

tableView.backgroundColor = [UIColor redColor]; 
+0

爲了讓我的問題更精確一點,每個tableviewcell都有一個單獨的顏色(如清晰的應用程序)。所以它真的是我想改變的Tableviewcell背景顏色。同樣因爲它變成透明的,當你移動到另一個單元格時,你可以看到它下面的單元格通過移動的單元格。 – BrFreek

相關問題