如何在一处拦截应用程序中的所有视图控制器viewDidAppear事件?

时间:2018-10-09 10:14:03

标签: ios uiviewcontroller nsnotificationcenter

我有一个基于UITabBarController的应用程序,选项卡栏上方显示了一个类似于Music应用程序的播放器的附加栏。

现在,我想将插图自动添加到所有顶级视图控制器(实际上是所有顶级滚动视图),以使内容永远不会被我的附加栏覆盖。

一种明显的方法是将所有滚动视图,表视图等子类化并添加插图。另一种方法是继承UIViewController并在整个应用程序中的任何地方使用它。在具有数十个视图控制器的现有应用程序中,这都不是一个好的选择。我也不想使用方法混乱。

所以我在想,标签栏控制器可以以某种方式拦截应用程序中的所有视图控制器演示事件(viewDidAppear?),并相应地调整其顶级可滚动视图。

但是,似乎无法找到拦截这些事件的简便方法。有任何想法吗?还是有其他任何方式可以自动将插图插入到任何地方?

1 个答案:

答案 0 :(得分:3)

  

如何在一处拦截应用程序中的所有视图控制器viewDidAppear事件?

除了烦人的UIViewController的viewDidAppear:之外,没有其他方法可以实现。

  

或者其他如何自动将插图插入到任何地方的方式?

只需在UITabBarController上设置additionalSafeAreaInsets。附加栏出现或消失(如果有)时,请致电viewSafeAreaInsetsDidChange