2012-07-05 61 views
1

我需要自定義部分部分,其中包含分組的風格的UITableView的幾個單元格。實際上,我想爲單元格的每個部分設置漸變顏色背景。每個部分的單元格數目可能會更改。如何爲分組單元格的UITableView部分繪製漸變色背景

我發現很多解決方案爲每個單元定製一個背景,但不定製一個單元格區域。

爲爲例,下面的代碼設置背景顏色每每個部分的單元:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{  

[cell setBackgroundColor:[UIColor clearColor]]; 

CAGradientLayer *grad = [CAGradientLayer layer]; 
grad.frame = cell.bounds; 
grad.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor greenColor] CGColor], nil]; 
grad.cornerRadius = 5.0; 

[cell setBackgroundView:[[UIView alloc] init]]; 
[cell.backgroundView.layer insertSublayer:grad atIndex:0]; 


CAGradientLayer *selectedGrad = [CAGradientLayer layer]; 
selectedGrad.frame = cell.bounds; 
selectedGrad.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil]; 

[cell setSelectedBackgroundView:[[UIView alloc] init]]; 
[cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0]; 

} 

這不是我需要實現,我必須設置的線性梯度顏色所有單元爲每個部分。

如果有誰面臨着同樣的問題,並發現了一個解決方案,請讓我們知道

非常感謝

回答

-1

地址:

#import <QuartzCore/QuartzCore.h> 

,改變你的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    if (indexPath.row % 2 == 0) { 
     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 85)]; 
     CAGradientLayer *gradient = [CAGradientLayer layer]; 
     gradient.frame = view.bounds; 
     gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:160/255.f green:208/255.f blue:222/255.f alpha:1] CGColor], (id)[[UIColor whiteColor] CGColor], nil]; 
     [cell.layer insertSublayer:gradient atIndex:0]; 
    } else { 
     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 85)]; 
     CAGradientLayer *gradient = [CAGradientLayer layer]; 
     gradient.frame = view.bounds; 
     gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:160/255.f green:208/255.f blue:222/255.f alpha:1] CGColor], nil]; 
     [cell.layer insertSublayer:gradient atIndex:0]; 
    } 
} 
相關問題