我正在创建一个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)
结果就是这样。在这里你可以看到图层没有覆盖整个图像?
答案 0 :(得分:1)
在单元格的生命周期中,UITableView可以多次调整您的单元格大小。在这种情况下,您需要自己反映这些变化。像这样覆盖单元格的-setFrame
:
- (void)setFrame:(CGRect)frame
{
[super setFrame:frame];
self.imgOverlay.frame = self.bounds;
[self setNeedsDisplay];
}