2012-04-19 3 views
1

質問hereで議論したように、CAGradientLayerを使用してUITableViewの背景色を設定しようとしました。私は何が起こることは初期値が移入された細胞は、私が設定グラデーションカラーと重複されているように見えるということですiOS UITableView:usingCAGradientLayerにより、最初のオブジェクトがテーブルビューに表示されなくなる

- (void)viewDidLoad 
{ 
    // .... 
    if (!navigationItems) { 
     navigationItems = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", @"4", nil]; 
    } 

} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSArray *colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:213.0f/255.0f green:91.0f/255.0f blue:92.0f/255.0f alpha:1.0f] CGColor][[UIColor colorWithRed:213.0f/255.0f green:0.0f blue:0.0f alpha:1.0f] CGColor], nil]; 
    CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
    gradientLayer.colors = colors; 
    gradientLayer.frame = tableView.bounds; 

    [tableView.layer insertSublayer:gradientLayer atIndex:0]; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    cell.textLabel.text = [navigationItems objectAtIndex:indexPath.row]; 
    cell.textLabel.textColor = [UIColor blackColor]; 

    return cell; 
} 

...このようなNSMutableArrayの中にいくつかの値とのUITableViewを移入しています。これらのセルにはテキスト/境界線は表示されません(値が1234のセル)。私はここで間違って何をしていますか?

答えて

5

backgroundViewをtableViewに設定すると私にとってはうまくいった。ここで私はそれをやったのです:

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.colors = colors; 
gradientLayer.frame = tableView.bounds; 

//[tableView.layer insertSublayer:gradientLayer atIndex:0]; 

UIView *tableBackgroundView = [[UIView alloc] init]; 
[tableBackgroundView.layer insertSublayer:gradientLayer atIndex:0]; 
[self.tableView setBackgroundView:tableBackgroundView]; 
+0

は、優れた、私のために働きました。ありがとうございます –

1

気をつけてinsertSublayerに気を付けてください!セルをリサイクルするたびに新しいレイヤーを挿入しています。だから、いくつかの繰り返しの後、あなたは細胞の内部にたくさんの層を持っています。これを避けるために

、このような毎回単純なループを実行します。

for (CALayer *layer in [cell.barView.layer.sublayers reverseObjectEnumerator]) { 
    if ([layer isKindOfClass:[CAGradientLayer class]]) { 
     [layer removeFromSuperlayer]; 
     break; 
    } 
} 
+0

こんにちは、チップのおかげで。 – vikmalhotra