У меня есть заголовок в TableView.
Включает UIImageView
, и я произвел на нем эффект параллакса, и он хорошо работает со следующим кодом:
var height: NSLayoutConstraint?
override func layoutSubviews() {
super.layoutSubviews()
guard let header = tableHeaderView else { return }
if let imageView = header.subviews.first as? UIImageView {
height = imageView.constraints.filter { $0.identifier == "height" }.first
}
let offsetY = -contentOffset.y
height?.constant = max(header.bounds.height, header.bounds.height + offsetY)
header.clipsToBounds = offsetY <= 0
}
Но у меня есть эффекты размытия (UIView
) и градиента (CALayer
) на моем UIImageView
.
func addBlur () {
let darkBlur = UIBlurEffect(style: .dark)
let blurView = UIVisualEffectView(effect: darkBlur)
blurView.frame = self.bounds
blurView.alpha = 0.3
self.addSubview(blurView)
}
func addGradient () {
var coverLayerBG: CAGradientLayer!
let colorTop = UIColor(red: 0, green: 0, blue: 0, alpha: 0).cgColor
let colorBottom = UIColor(red: 0, green: 0, blue: 0, alpha: 0.65).cgColor
coverLayerBG = CAGradientLayer()
coverLayerBG.colors = [colorTop, colorBottom]
coverLayerBG.frame = self.bounds
self.layer.addSublayer(coverLayerBG)
}
Мне нужно сделать один и тот же эффект растяжения для подпредставления (размытие) и подслоя (градиент)
Я уже пробовал это
guard let blur = imageView.subviews.first else { return }
blur.frame = imageView.bounds
Работает только для размытия (UIView
) , но с небольшой задержкой анимации.
Полагаю, это плохая практика.
Как применить параллакс для UIImageView
эффектов?