背景图像导致动画 popViewController 延迟/滞后

Posted

技术标签:

【中文标题】背景图像导致动画 popViewController 延迟/滞后【英文标题】:Background Image causing animated popViewController delay/lag 【发布时间】:2020-10-30 19:13:24 【问题描述】:

弹出视图控制器时动画出现延迟。

我收到延迟的原因是因为我有背景图片。

override func viewDidLoad() 
        super.viewDidLoad()
        
       setBackgroundImage()
        
    

@IBAction func navigationButton(_ sender: Any) 
        
        print("navigation button presssed")
        self.navigationController?.popViewController(animated: true)
    

func setBackgroundImage() 

        let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
        backgroundImage.image = UIImage(named: "RewardsBackgroundONLY")
        backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
        self.view.insertSubview(backgroundImage, at: 0)
    

如何防止设置背景图片时出现延迟。

我也试过在主线程上弹出视图控制器,还是不行。

【问题讨论】:

【参考方案1】:

可能是您的图片太大,内容模式backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill 导致了这种行为。

你有两种方法可以解决这个问题。

    更改 UIView.ContentMode 值并检查是否适合您。试试scaleToFillscaleAspectFit

    调整图片大小以适合您的应用。

【讨论】:

奇怪,我从来没有遇到过 scaleAspectFill 延迟我的应用程序 @aheze 实际上这不会导致滞后,但似乎是滞后。这是导航控制器中的奇怪行为 @RamiresNascimento 明白了,很奇怪。

以上是关于背景图像导致动画 popViewController 延迟/滞后的主要内容,如果未能解决你的问题,请参考以下文章

在背景图像动画之后创建背景颜色 CSS3 动画

全景背景图像淡入动画问题?

动画背景图像

设置 UIButton 背景图像停止动画

使用两个图像为 iphone tableviewCell 背景图像设置动画

jQuery同时动画和淡化背景图像