UICollectionView 单元格之间的活力效果

Posted

技术标签:

【中文标题】UICollectionView 单元格之间的活力效果【英文标题】:UICollectionView vibrancy effect between cells 【发布时间】:2016-10-20 13:31:53 【问题描述】:

我有一个 UICollectionView 有 3 个单元格(单元格的宽度是 self.collectionView.frame.size.width / 3)。

collectionView 放置在UIVisualEffectView 内,带有dark 模糊效果。

我想在每个单元格之间添加一个 1px 的活力间隙,我试过了:

let divider1 = UIVisualEffectView(frame: CGRect(x: self.collectionView.frame.size.width / 3, y: 0, width: 1, height: self.collectionView.frame.size.height))
divider1.effect = UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))

let divider2 = UIVisualEffectView(frame: CGRect(x: (self.collectionView.frame.size.width / 3) * 2, y: 0, width: 1, height: self.collectionView.frame.size.height))
        divider2.effect = UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))

self.collectionView.addSubview(divider1)
self.collectionView.addSubview(divider2)

但它没有呈现任何东西。如果我将分隔线的背景颜色设置为它确实有效的颜色,那么它可能具有活力效果。

知道为什么吗?

谢谢!

【问题讨论】:

从链接中尝试我的答案。***.com/questions/39976432/…。基于tableView的答案。但是,它适用于collectionView到.. @Joe 根据您的 tableView 答案,我无法真正理解在我的 collectionView 中要做什么。你能用我的代码解释一下吗?谢谢:) 你必须为你的collectionView使用backgroundView来达到这个效果...... 【参考方案1】:

试试这个代码:

注意:在 Swift 3 中测试

   override func viewDidLoad() 
    super.viewDidLoad()

        // Add a background view to the collectionView
        let backgroundImage = UIImage(named: "Set your image file here")
        let imageView = UIImageView(image: backgroundImage)
        self.collectionView.backgroundView = imageView

        //To get a balance look from collectionView background
        collectionView.backgroundColor = UIColor(patternImage: backgroundImage!)

        // To setup a blurView background
        let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
        let blurView = UIVisualEffectView(effect: blurEffect)
        blurView.frame = view.bounds
        imageView.addSubview(blurView)


输出:

【讨论】:

你的答案的活力效应在哪里?你确定你明白我想要达到的目的吗? 应用鲜艳度很容易,只需将鲜艳度效果应用到blurView即可。 应用活力 let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect) let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect) vibrancyEffectView.frame =blurView.contentView.addSubview(vibrancyEffectView) 我强烈建议您使用 collectionView 颜色而不是应用活力。只是我个人的意见。试试这个看看发生了什么 collectionView.backgroundColor = UIColor(white: 0.5, alpha:0.6)。如果您使用颜色值。您会找到答案...【参考方案2】:

要使其正常工作,您需要使用您在集合视图中使用的模糊效果创建 UIVibrancyEffect。

【讨论】:

以上是关于UICollectionView 单元格之间的活力效果的主要内容,如果未能解决你的问题,请参考以下文章

单元格 UICollectionView 之间的间距不正确

如何删除 UICollectionView 中单元格之间的空间? [复制]

Swift:UICollectionView - 固定单元格之间的空间

UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和相同的单元格之间定义的间距

如何禁用 UICollectionView 部分之间的单元格拖动?

UICollectionView 项目、部分和单元格之间有啥区别? [关闭]