【发布时间】:2016-09-01 06:24:43
【问题描述】:
我正在尝试在我的 tableviewcell 中设置透明渐变颜色。在第一次加载时一切正常,但每次滚动时,颜色都会再次加载,每次滚动时渐变似乎越来越暗,每次滚动时,tableview 似乎更迟钝。这是我实现渐变颜色的代码:-
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.contentView.layer.insertSublayer(gradient(cell.bounds), atIndex: 1)
}
func gradient(frame:CGRect) -> CAGradientLayer {
let layer = CAGradientLayer()
layer.frame = frame
layer.startPoint = CGPointMake(0,0.68)
layer.endPoint = CGPointMake(0,0.75)
layer.colors = [UIColor.clearColor().CGColor,UIColor.blackColor().colorWithAlphaComponent(0.2).CGColor]
return layer
}
【问题讨论】:
-
可重复使用的单元格不起作用......我想。它一次又一次地分配,滚动视图时变得越来越暗
-
单元是可重复使用的对象,这意味着您只需在初始化它们时插入一次层(如果您不想创建,
tableView:cellForRowAtIndexPath:可能是添加该层的好地方自定义单元格类)。然后您可以在相关单元格的willDisplayCell或layoutSubviews方法中更新图层的框架。 -
这绝对是重复使用单元格的问题。请记住,如果您正在重用单元格(您应该)并且每次滚动时设置单元格的透明度 = cell.trasparency + 0.1(仅用于显示增量的伪代码),透明度将增加
-
我也认为这里的问题是单元格双端队列在渐变的情况下不起作用。我如何阻止渐变进一步添加。我也尝试从 tableView:cellForRowAtIndexPath 加载,但结果相同。
标签: ios swift tableview gradient tableviewcell