iOS 弹框盖住Tabbar,跳转其他页面回来依然显示方案对比

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文讨论了在iOS应用中实现弹框只在主页显示的需求。作者提出了四种解决方案,包括将弹框加在UIApplication.shared.keyWindow上、使用present半屏弹框款式、将tabbarViewController作为UINavigationController的rootViewController,以及创建一个高于UIApplication.shared.delegate.window的UIWindow来显示弹框。最终作者选择了第四种方案,并给出了具体的代码实现。

🎯

关键要点

  • 讨论了在iOS应用中实现弹框只在主页显示的需求。
  • 分析了弹框在不同页面的层级问题,导致弹框在跳转后仍然显现。
  • 提出了四种解决方案来处理弹框显示问题。
  • 方案一:将弹框加在UIApplication.shared.keyWindow上,但存在闪现问题。
  • 方案二:使用present半屏弹框款式,但与全屏弹框不一致。
  • 方案三:将tabbarViewController作为UINavigationController的rootViewController,改变项目结构。
  • 方案四:创建一个高于UIApplication.shared.delegate.window的UIWindow来显示弹框,最终选择此方案。
  • 具体实现中重写了loadView和viewDidAppear等方法来控制弹框的显现与隐藏。
  • 通过FJFDialogWindowManager管理弹框的显示状态,确保弹框在适当时机显现或隐藏。

延伸问答

如何在iOS应用中实现弹框只在主页显示?

可以通过创建一个高于UIApplication.shared.delegate.window的UIWindow来显示弹框,确保弹框只在主页显现。

弹框在不同页面显示的问题是什么?

弹框的层级问题导致在跳转到其他页面后,弹框仍然显现,影响用户体验。

有哪些方案可以解决弹框显示问题?

提出了四种方案,包括将弹框加在keyWindow上、使用半屏弹框、改变项目结构、以及创建高层级UIWindow。

选择哪种方案来实现弹框显示?

最终选择了创建一个高于UIApplication.shared.delegate.window的UIWindow的方案。

如何管理弹框的显示状态?

通过FJFDialogWindowManager管理弹框的显示状态,确保在适当时机显现或隐藏弹框。

在实现中如何控制弹框的显现与隐藏?

重写loadView和viewDidAppear等方法来控制弹框的显现与隐藏。

🏷️

标签

➡️

继续阅读