滚动后集合视图单元格 alpha 正在更改

Posted

技术标签:

【中文标题】滚动后集合视图单元格 alpha 正在更改【英文标题】:Collection View Cells alpha is changing after scroll 【发布时间】:2017-12-03 14:55:55 【问题描述】:

我创建了一个集合视图,其中单元格内部有一个视图。视图的 alpha 值为 0.65。当我滚动时,视图变得更亮。也许这些视图会堆叠在一起?

我的代码:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! LevelStufenCell

    cell.levelViewBack = UIView()
    cell.levelViewBack.frame = CGRect(x: 0, y: 0, width: cell.frame.height, height: cell.frame.width)
    cell.levelViewBack.layer.cornerRadius = cell.levelViewBack.frame.height * (36 / 198)
    cell.levelViewBack.backgroundColor = UIColor.white
    cell.levelViewBack.alpha = 0.65
    cell.insertSubview(cell.levelViewBack, at: 10)

    return cell

【问题讨论】:

你有什么理由不在界面生成器中添加子视图吗? 【参考方案1】:

单元格被重复使用,因此每次单元格滚动到视图中时,您都会向每个单元格添加另一个 levelViewBack

您在LevelStufenCell 中定义了levelViewBack ... 是IBOutlet 吗?如果是这样,您不需要每次都创建一个新的 - 只需删除此行:

cell.levelViewBack = UIView()

如果它不是IBOutlet,您是在LevelStufenCell 中创建它吗?如果是这样,再次,只需删除该行。如果没有,请在“重新创建”之前检查它是否已创建:

if cell.levelViewBack == nil 
    cell.levelViewBack = UIView()

【讨论】:

以上是关于滚动后集合视图单元格 alpha 正在更改的主要内容,如果未能解决你的问题,请参考以下文章

在集合视图中找到中间单元格并更改其内容

集合视图更改单元格大小

如何将集合视图单元格滚动到可见区域的中间

重新加载并滚动到特定的集合视图单元格

ios - 单元格表格视图内的视图位置仅在滚动后才会更改

当边界 UICollectionView 更改时调整单元格大小