我有一个包含单元格的uitableview.我试图弄清楚如何调整细胞的z顺序.我想这样做:
但是当我加载tableview时,我得到了这个:
我已经尝试过[tableView sendSubViewToBack:cell].此外,当我滚动到底部然后返回到顶部时,结果如图1所示,但当我向下滚动时,结果如图2所示.我感谢您的帮助.
static NSString *CellIdentifier = @"Cell"; NSString *row = [NSString stringWithFormat:@"%li",(long)indexPath.row]; GetMoreTableViewCell *cell = [_chapters dequeueReusableCellWithIdentifier:CellIdentifier]; NSMutableDictionary *deckCategory = [[_data valueForKey:key] valueForKey:row]; if (cell == nil) { cell = [[GetMoreTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } [tableView bringSubviewToFront:cell]; if([[[_data valueForKey:key] valueForKey:[NSString stringWithFormat:@"%i",indexPath.row]] valueForKey:@"isDefault"] == [NSNumber numberWithBool:YES]) { cell.addButton.hidden = YES; } cell.ttitle.text = [[[_data valueForKey:key] valueForKey:row] valueForKey:@"Name"]; cell.backgroundColor = [UIColor clearColor]; cell.selectionStyle = UITableViewCellSelectionStyleNone; CALayer * l = [cell.cellImage layer]; [l setMasksToBounds:YES]; [l setCornerRadius:10.0]; CALayer * b = [cell.cellBackground layer]; [b setMasksToBounds:YES]; [b setCornerRadius:19.0]; cell.cellImage.image = [UIImage imageNamed:[deckCategory valueForKey:@"Image"]]; if(indexPath.row == 0) { cell.cellBackground.image = [UIImage imageNamed:@"card_green.png"]; } else if(indexPath.row == 1) { cell.cellBackground.image = [UIImage imageNamed:@"card_orange.png"]; } else if(indexPath.row == 2) { cell.cellBackground.image = [UIImage imageNamed:@"card_red.png"]; } return cell;
解决方法
我在UITableViewCells上使用阴影时遇到了同样的问题,屏幕下方的单元格(在Y方向上)的阴影与屏幕顶部的较高阴影重叠.
我的解决方案是根据indexPath在UITableViewCell层上设置Z Position.
cell.layer.zPosition = CGFloat(indexPath.row)
我的问题只发生在各个部分.如果后续部分中的单元格也遇到此问题,则需要在计算中添加节号.
cell.layer.zPosition = CGFloat(indexPath.section) * 1000.0 + CGFloat(indexPath.row)
如果每个部分中有超过1000行,则增加幻数,或者考虑为什么在应用程序中有1000行;-)