【问题标题】:Gradient with alpha in tableviewcell gets darker with each scroll每次滚动时,tableviewcell 中带有 alpha 的渐变会变暗
【发布时间】: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: 可能是添加该层的好地方自定义单元格类)。然后您可以在相关单元格的willDisplayCelllayoutSubviews 方法中更新图层的框架。
  • 这绝对是重复使用单元格的问题。请记住,如果您正在重用单元格(您应该)并且每次滚动时设置单元格的透明度 = cell.trasparency + 0.1(仅用于显示增量的伪代码),透明度将增加
  • 我也认为这里的问题是单元格双端队列在渐变的情况下不起作用。我如何阻止渐变进一步添加。我也尝试从 tableView:cellForRowAtIndexPath 加载,但结果相同。

标签: ios swift tableview gradient tableviewcell


【解决方案1】:

1) 将子视图添加到您的 Cell like 并将其连接到您的视图控制器:

class MyCell : UITableViewCell {     
    @IBOutlet weak var bgView: UIView!        
}

2)willDisplayCell 方法中删除您的行并将其移至您的 cellForRowAt() 方法,更新如下:

override func tableView(tableView: UITableView, cellForRowAtIndexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyCell

    if(cell.bgView.layer.sublayers == nil) {
        cell.bgView.layer.insertSublayer(gradient(frame: cell.bounds), at: 1)
    }
    return cell
}

【讨论】:

  • 对不起,当遇到软 swift 不兼容的问题时,我在 Swift 3.0 上部署。
  • @pedrouan 你的解决方案对我来说是单一的静态颜色,但我的问题是当我为每个单元格传递动态颜色时,当我滚动表格视图时,渐变初始不会改变,但会改变但不同从实际通过指数。请帮我。我能做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多