一千萬個為什麽

搜索

UITableViewCell具有自定義漸變背景,另一個漸變為高亮顏色

我有一個自定義UITableViewCell與自定義布局。我想要一個漸變背景,所以在我的UITableViewDelegate cellForRowAtIndexPath:方法中,我創建了一個CAGradientLayer並使用insertSubLayer:atIndex:將其添加到單元格的圖層中(使用索引0)。除了兩件事之外,這很好用:

最重要的是,當突出顯示行時,我無法弄清楚如何更改為不同的漸變顏色。我嘗試了幾件事,但是我對框架不夠熟悉才能讓它工作。在表委托或單元本身內放置代碼的理想位置在哪裏?

此外,表格中每個單元格之間有1px的空白區域。我在主視圖上有背景顏色,桌面上有背景顏色,單元格上有背景顏色。在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 blackColor] CGColor], nil];

    [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];
}

轉載註明原文: UITableViewCell具有自定義漸變背景,另一個漸變為高亮顏色