Swift 在导航VC堆栈中弹出VC会导致现有行为不再工作
在VC1中,有一个带有标题的collectionview,我在其中使用UIViewPropertyAnimator拉伸和模糊基础图像 这是自定义标题:Swift 在导航VC堆栈中弹出VC会导致现有行为不再工作,swift,Swift,在VC1中,有一个带有标题的collectionview,我在其中使用UIViewPropertyAnimator拉伸和模糊基础图像 这是自定义标题: class HeaderView: UICollectionReusableView { var animator: UIViewPropertyAnimator! var restaurantLogo: CustomImageView = { let imageview = CustomIma
class HeaderView: UICollectionReusableView {
var animator: UIViewPropertyAnimator!
var restaurantLogo: CustomImageView = {
let imageview = CustomImageView()
imageview.clipsToBounds = true
imageview.contentMode = .scaleAspectFill
imageview.translatesAutoresizingMaskIntoConstraints = false
return imageview
}()
override init(frame: CGRect) {
super.init(frame: frame)
addImage()
setupBlur()
}
fileprivate func setupBlur() {
let blurEffect = UIBlurEffect(style: .regular)
let visualEffect = UIVisualEffectView(effect: blurEffect)
self.addSubview(visualEffect)
visualEffect.translatesAutoresizingMaskIntoConstraints = false
visualEffect.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
visualEffect.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
visualEffect.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
visualEffect.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
animator = UIViewPropertyAnimator(duration: 3.0, curve: .linear, animations: {
visualEffect.effect = nil
})
animator.isReversed = true
animator.fractionComplete = 0
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我正在使用以下scrollview覆盖来启动向下滚动时的模糊和拉伸效果(需要最小偏移以适应安全区域+导航栏高度):
问题是,当我将VC2推入堆栈,然后将其弹出时,我可以在VC1中拉伸图像,但模糊效果不存在。我不知道是什么原因造成的。我将一个基本UIViewController推到堆栈上,并弹出它以查看相同的结果。如果再次显示VC1,则最小偏移是并且应该是相同的
所以我试过或检查过的任何东西都不能表明我错在哪里
值得一提的是,如果我弹出VC1,转到VC0,然后按下VC1,那么模糊效果会再次出现。所以有些东西需要重置,我不知道那是什么
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
let contentOffsetY = scrollView.contentOffset.y
if contentOffsetY >= -2 * minOffset! {
headerView?.animator.fractionComplete = 0
return
}
headerView?.animator.fractionComplete = abs(contentOffsetY) / 400
}