Swift 在导航VC堆栈中弹出VC会导致现有行为不再工作

Swift 在导航VC堆栈中弹出VC会导致现有行为不再工作,swift,Swift,在VC1中,有一个带有标题的collectionview,我在其中使用UIViewPropertyAnimator拉伸和模糊基础图像 这是自定义标题: class HeaderView: UICollectionReusableView { var animator: UIViewPropertyAnimator! var restaurantLogo: CustomImageView = { let imageview = CustomIma

在VC1中,有一个带有标题的collectionview,我在其中使用UIViewPropertyAnimator拉伸和模糊基础图像

这是自定义标题:

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
}