如果我在cellForItemAtIndexPath
中设置单元格的alpha属性,如下所示......
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("CGPathCell", forIndexPath: indexPath) as UICollectionViewCell
// Prepare cell
cell.alpha = 0.5
cell.setNeedsDisplay()
return cell
}
...最初出现的单元格是不透明的(alpha为1.0)。如果我滚动,出现的“新”(重用)单元格具有预期的alpha值。如果我回滚到开头,“原始”单元格(开始不透明)现在也具有预期的alpha值。
为什么初始加载时未设置alpha值?
其他不起作用的尝试:
将此添加到委托中,我得到相同的结果:
func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
cell.alpha = 0.5
}
将此添加到cellForItemAtIndexPath
:
let attrs = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
attrs.alpha = 0.5
cell.applyLayoutAttributes(attrs)
答案 0 :(得分:5)
我相信这种情况正在发生,因为Apple正在对单元格进行一些特殊的内部处理,作为UICollectionView
的一部分。如果您在单元格的 contentView
属性上设置了alpha,则Alpha会按预期保持不变。
UICollectionViewCell docs 类提示:
要配置单元格的外观,请将显示数据项内容所需的视图添加为contentView属性中视图的子视图。不要直接将子视图添加到单元格本身。
如果您有backgroundView
或selectedBackgroundView
,则需要单独设置其字母。
答案 1 :(得分:0)
前段时间我有一个简短的问题,重新调整PDF格式,可能是一样的。我用以下方式解决了这个问题,每次pdf都不得不调整大小时setNeedsDisplay不起作用,所以我制作了一个ViewController,其alpha:0并调用非动画segue到这个视图控制器,这样清晰的视图控制器在我想要更新的视图控制器之后,我立即解除了新的视图控制器,因此pdf更新为新的大小。此问题也很老,也许这可以帮助您解决问题。