无法确定表格视图单元格的宽度

时间:2015-06-24 04:06:42

标签: ios swift uitableview

奇怪的是,我似乎无法弄清楚为什么我不能在此代码中返回表格视图单元格的宽度。这位于我的自定义UITableViewCell中。我的目标是创建一个扩展单元格宽度的渐变,以便某些文本可以读取,而不会被位于下方的图片遮挡。渐变出现,但似乎延伸约9/10到屏幕的边缘。我认为它可能与附件视图有关,尽管我将它设置为无。经过几次调整后,我无法弄清楚为什么它没有扩展单元格的宽度。我不想硬编码一个懒惰的价值,只是想了解为什么会发生这种情况,以期在将来避免它。谢谢!

//Adds Gradient to the information background to allow text to be readable
func addGradientForInformationBackground(){
    InformationBackground.backgroundColor = UIColor.clearColor();
    let gradient = CAGradientLayer();

    gradientFrame = self.frame;

    //build the colors array for the gradient
    var colors = NSArray(array:[UIColor.clearColor().CGColor,UIColor.blackColor().colorWithAlphaComponent(0.3).CGColor,UIColor.blackColor().colorWithAlphaComponent(0.5).CGColor,UIColor.blackColor().colorWithAlphaComponent(0.6).CGColor,UIColor.blackColor().colorWithAlphaComponent(0.7).CGColor,UIColor.blackColor().colorWithAlphaComponent(0.9).CGColor,UIColor.blackColor().CGColor]);

    //apply the colors and the gradient to the view
    gradient.colors = colors as [AnyObject];

    self.InformationBackground.layer.insertSublayer(gradient, atIndex: 0);
}

1 个答案:

答案 0 :(得分:0)

我认为这取决于您调用方法addGradientForInformationBackground()的位置。

我认为这可能会导致您的情况:

  1. 您在xib中创建自定义单元格(可能是320宽度)

  2. 在初始化过程中,您当时调用addGradientForInformationBackground()单元格的宽度确实是320作为xib

  3. 将单元格加载到tableView中但tableView不会接受具有不同宽度的单元格,因此tableView以某种方式调用cell.setFrame来更改单元格的宽度

  4. 但您添加的图层框架不会改变

  5. 所以尝试调用prepareForReuse中的添加图层方法,检查图层是否存在,如果不创建

相关问题