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 中单元格之间的空间? [复制]
Swift:UICollectionView - 固定单元格之间的空间
UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和相同的单元格之间定义的间距