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等方法来控制弹框的显现与隐藏。
🏷️
标签
➡️