滚动后会出现自定义UITableViewCell阴影

时间:2013-12-01 14:30:34

标签: ios uitableview quartz-core

我在iOS6中使用表视图控制器中的自定义表格视图单元格制作应用程序。该单元格是在故事板中使用原型单元设计的。

在表格视图控制器中,我做了三件事:

  1. 向tableView中的单元格添加一个简单的自定义动画:willDisplayCell:forRowAtIndexPath:
  2. 在tableView:cellForRowAtIndexPath:
  3. 中为单元格添加圆角效果
  4. 在tableView:cellForRowAtIndexPath:
  5. 中为单元格添加阴影效果

    问题是,当加载表格视图时,最初出现的3个单元格会正确显示动画和圆角但没有阴影效果。但是,当我向下滚动时,出现的新单元格也会有动画+圆角+阴影。

    而且,现在当我向后滚动时,最初的3个细胞也会产生阴影效果。

    几个小时的调试让我更加无知。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我解决了问题。 [cell layoutSubviews]完成我需要的一切:

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    cell.imageView.layer.masksToBounds = NO;
    cell.imageView.layer.cornerRadius = 5.0f;
    [cell layoutSubviews];
}

cell.imageView.layer.shadowOpacity = 0.5f;
cell.imageView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:cell.imageView.bounds cornerRadius:5.0f].CGPath;
cell.imageView.layer.shadowOffset = CGSizeMake(2.5f, 2.5f);
cell.imageView.layer.shadowRadius = 2.5f;

答案 1 :(得分:0)

如果其他人有此问题:

在您的tabPos[pdx]子类中,覆盖tabPos[dx],然后插入添加阴影的代码。最后,确保将void taupe(void){ int current_time = glutGet( GLUT_ELAPSED_TIME ); float dt = (float)(current_time - start_time) / interval; if (dt > 1.0f) dt = 1.0f; float interx = tabPos[pdx] * (1.0f - dt) + tabPos[dx] * dt; glPushMatrix(); glTranslatef(interx,dy,tabPos[dz]); // Ligne Milieu droite glColor3f(0.8,0.3,0.5); glutSolidCube(2); glPopMatrix(); } 作为代码的最后一行。

UITableViewCell

然后在视图控制器内部实现layoutSubviews委托方法,将单元格转换为单元格子类,并在主线程上调用super.layoutSubviews()

    override func layoutSubviews() 

    configureShadow() // <-- insert shadow code here, or create a method
    super.layoutSubviews()
}