在heightForRowAtIndexPath之后在子图层上应用框架

时间:2015-04-15 11:15:21

标签: ios uitableview swift

我正在创建一个UITableViewCell,其中包含一个填充整个单元格的图像。我创建然后在这个图像的顶部创建了一个子层,假设填充整个图像。但问题是它不是。

首先,我将单元格的高度设置为动态,如下所示:

func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {

    return (self.view.frame.height-40)/3;

}

然后我在awakeFromNib

的单元子类中设置了这样的层
    var imgOverlay: CALayer = CALayer()
    imgOverlay.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4).CGColor
    imgOverlay.frame = backgroundImage.bounds
    backgroundImage.layer.addSublayer(imgOverlay)

结果就是这样。在这里你可以看到图层没有覆盖整个图像?

enter image description here

1 个答案:

答案 0 :(得分:1)

在单元格的生命周期中,UITableView可以多次调整您的单元格大小。在这种情况下,您需要自己反映这些变化。像这样覆盖单元格的-setFrame

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];
    self.imgOverlay.frame = self.bounds;
    [self setNeedsDisplay];
}