UIVisualEffectView明显地添加到UICollectionViewCell中



我有很多单元格UICollectionView。细胞上有需要模糊的图像。这就是为什么我要在image views中添加具有模糊效果UIVisualEffectView的原因。单元格就像页面 - 每个单元格占据整个屏幕。

问题出在第二个单元格上。当它出现时,模糊的视图被明显添加,它是丑陋的。其余单元格在屏幕上可见时已经具有模糊的视图并且正常。这是我用来添加blur view的代码:

class ImageCell: UICollectionViewCell {
@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var backgroundImageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
let regularBlur = UIBlurEffect(style: .regular)
let blurView = UIVisualEffectView(effect: regularBlur)
blurView.frame = backgroundImageView.bounds
blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
backgroundImageView.addSubview(blurView)
}
}

修改代码:

class ImageCell: UICollectionViewCell {
@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var backgroundImageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
backgroundImageView.isHidden = true
let regularBlur = UIBlurEffect(style: .regular)
let blurView = UIVisualEffectView(effect: regularBlur)
blurView.frame = backgroundImageView.bounds
blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
backgroundImageView.addSubview(blurView)
backgroundImageView.isHidden = false
}
}

你可以像这样编码:

class ImageCell: UICollectionViewCell {
@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var backgroundImageView: UIImageView!
let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .regular))

override func awakeFromNib() {
super.awakeFromNib()
blurView.frame = backgroundImageView.bounds
blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
backgroundImageView.addSubview(blurView)
}
override func prepareForReuse() {
blurView.isHidden = true
}
}

最新更新