我正试图在右侧为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];
}
但是这里我的问题是每当我滚动阴影变得越来越暗。也离开细胞界并破坏细胞设计。我怀疑它反复添加。任何人都可以帮我解决这个问题吗?我对使用图像阴影不感兴趣。所以除了使用图像之外的任何其他解决方案都将受提前谢谢。
答案 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)
每当你滚动单元格刷新并再次添加视图时,你可以做两件事
一个确保没有添加阴影,你不会再添加它。
或
删除所有子视图,并在创建单元格时再次添加它们