UITableViewCell内部阴影单独右侧

时间:2014-03-16 05:21:48

标签: ios objective-c uitableview shadow

我正试图在右侧为UITableViewCell创建内部阴影。这就是我的做法,

if (![cell viewWithTag:100]) {
UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(DEVICE_WIDTH, 0, 10, height)];
shadowView.layer.shadowColor = [UIColor darkGrayColor].CGColor;        
shadowView.layer.shadowRadius = 5.0;
shadowView.layer.shadowOffset = CGSizeMake(-2, 0);
shadowView.layer.shadowOpacity = 0.8;
shadowView.backgroundColor = [UIColor darkGrayColor];
shadowView.tag = 100;

shadowView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

[cell addSubview:self.shadowView];
}

但是这里我的问题是每当我滚动阴影变得越来越暗。也离开细胞界并破坏细胞设计。我怀疑它反复添加。任何人都可以帮我解决这个问题吗?我对使用图像阴影不感兴趣。所以除了使用图像之外的任何其他解决方案都将受提前谢谢。

3 个答案:

答案 0 :(得分:2)

确保正确使用dequeueReusableCellWithIdentifier。以下代码适用于我

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        NSLog(@"new cell");

            UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(320, 0, 10, 44)];
            shadowView.layer.shadowColor = [UIColor darkGrayColor].CGColor;
            shadowView.layer.shadowRadius = 5.0;
            shadowView.layer.shadowOffset = CGSizeMake(-2, 0);
            shadowView.layer.shadowOpacity = 0.8;
            shadowView.backgroundColor = [UIColor darkGrayColor];
            shadowView.tag = 100;
            shadowView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

            [cell addSubview:shadowView];
    }
    else
    {
        NSLog(@"old cell");
    }

    return cell;
}

答案 1 :(得分:1)

我发现了问题。我应该做的,

self.contentView.superview.clipsToBounds = YES;
    self.contentView.clipsToBounds = YES;

现在一切都像魅力一样。

答案 2 :(得分:0)

每当你滚动单元格刷新并再次添加视图时,你可以做两件事

一个确保没有添加阴影,你不会再添加它。

删除所有子视图,并在创建单元格时再次添加它们