加载具有与其 UICollectionView 不同的 alpha 值的 UICollectionViewCell

Posted

技术标签:

【中文标题】加载具有与其 UICollectionView 不同的 alpha 值的 UICollectionViewCell【英文标题】:Load a UICollectionViewCell with different alpha value than its UICollectionView 【发布时间】:2015-12-03 15:39:12 【问题描述】:

我无法为我的 UICollectionViewCell 提供与拥有它们的 UICollectionView 不同的 alpha。我看过其他一些帖子,比如this one,但没有一个对我有用。我有一个带有UICollectionView 的.xib 文件,其中alpha 设置为0.9,其中的单元格是从另一个.xib 文件加载的,其alpha 设置为1.0。无论我尝试了什么,UICollectionView 的 alpha 优先。这些尝试包括:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! Cell

// Here is the first attempt
    cell.alpha = 1.0
    cell.contentView.alpha = 1.0

// Here is the second attempt
    let attribute = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
    attribute.alpha = 1.0
    cell.applyLayoutAttributes(attribute)

    cell.setNeedsDisplay()
    return cell

我希望单元格在不透明的情况下加载,但我希望包含它们的集合视图稍微透明。每个单元格上都加载了一个完全不能透明的唯一图像。

Edit1:我尝试将UICollectionViewbackgroundColor 设置为使用1.0 alpha 清除,然后在我的viewDidLoad() 方法中为其提供自定义backgroundView。我有一个集合视图的@IBOutlet,用于设置以下内容:

@IBOutlet weak var collectionView: UICollectionView!

// MARK: -View Lifecycle
override func viewDidLoad() 
    super.viewDidLoad()

    collectionView.delegate = self
    collectionView.dataSource = self

    let background = UIView(frame: collectionView.bounds)
    background.backgroundColor = UIColor(red: 26/255.0, green: 26/255.0, blue: 26/255.0, alpha: 0.97)
    collectionView.backgroundView = background

    collectionView.registerNib(UINib(nibName: "Cell", bundle: nil), forCellWithReuseIdentifier: "Cell")


这确实有效。

【问题讨论】:

您希望 collectionView 的 alpha 值为 0.9,而 collectionViewCells 的值为 1.0? 是的! collectionView 的 alpha 为 0.9,它为单元格提供了相同的 alpha。 尝试将背景视图设置为集合视图,然后将其更改为 alpha。希望这会有所帮助 【参考方案1】:

您不能有 alpha != 1 的父视图及其 alpa=1 的子视图,它们不会按预期工作。

通常我所做的是使用辅助视图(与集合视图相同的框架),父视图的兄弟(您的集合视图)视图,alpha 设置为 X 值。将集合视图背景的颜色设置为 clearColor。

【讨论】:

请看我的编辑。恐怕我做的不对?

以上是关于加载具有与其 UICollectionView 不同的 alpha 值的 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章

具有网络数据的 UICollectionView 在与交互之前不显示单元格

具有异步图像加载的自调整 UICollectionView 单元格

无法从 UITableViewCell 加载 UICollectionView

uicollectionview 动态高度但固定宽度

完成加载后,在 UICollectionView 中的第一个单元格上调用函数

UICollectionView:重新加载数据,不删除单元内动画