iOS中UITableViewCell左半部分的渐变效果

时间:2013-05-23 08:16:02

标签: iphone ios uitableview gradient

是否可以在iOS中仅制作UITableViewCell渐变的一半或半层?

我正在使用以下代码。

-(void) addGradient:(UITableViewCell *) _button {
    //  [self removeGradient:_button];
    // Add Border
    CALayer *layer = _cell.layer;
    layer.cornerRadius = 4.0f;
    layer.masksToBounds = YES;
    layer.borderWidth = 1.0f;
    layer.borderColor = [UIColor colorWithWhite:0.5f alpha:0.2f].CGColor;

    // Add Shine
    CAGradientLayer *shineLayer = [CAGradientLayer layer];
    shineLayer.frame = layer.bounds;
    shineLayer.colors = [NSArray arrayWithObjects:
                         (id)[UIColor colorWithWhite:1.0f alpha:0.0f].CGColor,
                         (id)[UIColor colorWithWhite:1.0f alpha:0.0f].CGColor,
                         (id)[UIColor colorWithWhite:0.75f alpha:0.0f].CGColor,
                         (id)[UIColor colorWithWhite:0.4f alpha:0.0f].CGColor,
                         (id)[UIColor colorWithWhite:1.0f alpha:1.0f].CGColor,
                         nil];
    shineLayer.locations = [NSArray arrayWithObjects:
                            [NSNumber numberWithFloat:0.0f],
                            [NSNumber numberWithFloat:0.5f],
                            [NSNumber numberWithFloat:0.5f],
                            [NSNumber numberWithFloat:0.8f],
                            [NSNumber numberWithFloat:1.0f],
                            nil];
    [layer addSublayer:shineLayer];

}

我在cellForRowAtIndexPath方法中调用此方法。在这里,我将梯度效果完全设置到细胞的底部。但我只需要左半部分的UITableViewCell具有渐变效果。是否可以这样做?

由于

1 个答案:

答案 0 :(得分:0)

创建另一个UIView,其框架占据UITableViewCell的一半,使用您拥有的代码段将渐变设置为该视图。

将UIView作为子视图添加到UITableViewCell。

//Considering cell is the tableviewcell
UIView *leftHalf = [[UIView alloc] initWithFrame:CGRectMake(0,0,cell.frame.size.width/2,cell.frame.size.height)];
[self addGradient:leftHalf]; //Assuming the method can take UIView as param.
[cell addSubView: leftHalf];