【发布时间】:2018-10-09 10:14:02
【问题描述】:
我有一个基于 UITabBarController 的应用,并且在标签栏上方还有一个类似于音乐应用播放器的附加栏。
现在我想自动向所有顶级视图控制器(实际上是所有顶级滚动视图)添加插图,以便我的附加栏永远不会覆盖内容。
一种明显的方法是将所有滚动视图、表格视图等子类化并添加插图。另一种方法是继承 UIViewController 并在整个应用程序的任何地方使用它。在具有数十个视图控制器的现有应用程序中,这些都不是一个好的选择。我也不想使用方法调配。
所以我在想,标签栏控制器可以以某种方式拦截应用程序中的所有视图控制器呈现事件(viewDidAppear?)并相应地调整它们的顶级可滚动视图。
但是,似乎找不到拦截这些事件的简单方法。有任何想法吗?或者任何其他方式可以在任何地方自动注入插图?
【问题讨论】:
-
您是否尝试创建 uiview 控制器的子类,它是您拥有的所有视图控制器的超类,例如基本视图控制器并覆盖 viewdid 出现方法。
-
@PrashantTukadiya 你真的读过这个问题吗?
-
@mojuba 您可以创建一个带有容器视图的新 UIViewController 并将您的 UITabBarController 嵌入其中。并调整 ContainerView 的约束以合并附加栏
-
我认为需要更多关于您的结构的详细信息,如果您的 TabBarController 只有子视图控制器(不是导航控制器),它可能会更容易。此外,我认为您不需要更改 viewDidAppear 中的插图(除非您在 viewDidLoad/willAppear 中执行其他操作)。 insets 可以在将控制器添加到标签栏之前设置,它们不受自动布局的影响。
-
@mojuba 是的,我已经阅读了这个问题。但是您要问的是快捷方式,这可能会影响您将来在应用程序中的更新。最好以长而安全的方式获得。我建议你,但不管它是你的电话:)
标签: ios uiviewcontroller nsnotificationcenter