CAGradientLayer仅在表格单元格重新绘制iOS 7时才显示

时间:2014-12-05 18:46:05

标签: ios uitableview swift cagradientlayer

在我的根视图控制器上,我有一个使用自定义单元格的UITableView,其中UIImageView填充单元格的边界并在其上添加了CAGradientLayer以创建透明渐变。它在iOS 8中完美运行。但是,在iOS 7中,单元格最初不显示CAGradientLayer。但是,如果我向下滚动以使单元格不在视图中,然后再向上滚动以返回到视图中以便重新绘制,则会出现CAGradientLayer。我有什么想法可以解决这个问题吗?

以下是我在自定义单元格中使用的代码:

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    l = CAGradientLayer()
    l.frame = bandImageView.bounds
    l.colors = [UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 0.2).CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 0.8).CGColor]
    bandImageView.layer.insertSublayer(l, atIndex: 0)
}

override func layoutSubviews() {
    self.contentView.frame = self.bounds
    l.frame = bandImageView.bounds
}

在我的桌面视图中:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: HomeTableViewCell = tableView.dequeueReusableCellWithIdentifier("HomeCell") as HomeTableViewCell
        cell.bandImageView.clipsToBounds = true
        let bandImage = bandArray[indexPath.row]
        cell.bandImageView.image = UIImage(named: bandImage)

        return cell
}

0 个答案:

没有答案