在我的根视图控制器上,我有一个使用自定义单元格的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
}