【问题标题】:UISearchBar in UINavigationBar shared between UIViewControllersUINavigationBar 中的 UISearchBar 在 UIViewControllers 之间共享
【发布时间】:2016-07-29 11:05:36
【问题描述】:
我正在尝试复制 Facebook for iOS 应用程序中的功能,其中导航栏中的 UISearchBar 在视图控制器之间“共享”。例如,点击主页 News Feed 视图上的搜索栏似乎会推送一个新的视图控制器并将搜索栏“转移”到新的视图控制器。搜索栏的大小与视图控制器转换一起调整大小和动画(包括使用“交互式弹出”转换时,如下面的屏幕截图所示)。这种行为在整个应用程序中以各种方式表现出来。是否有在 UIKit 中实现此行为的标准方法,或者 Facebook 是否以某种方式将自定义过渡/动画应用到导航栏和搜索栏?
【问题讨论】:
标签:
objective-c
swift
uinavigationcontroller
uikit
uisearchbar
【解决方案1】:
快速玩过它,首先我想说的是主屏幕分为几个部分。很难知道这些对象是什么,但猜测一下,我会说他们有一个 UIViewController,它只包含搜索栏和其他“导航”元素。下面还有另一个 UIViewController 包含新闻提要,这是一个灵活的空间,可以在其中发生各种其他事情(自定义)。这两个都可能在父 ViewController 中设置为“ChildViewControllers”。例如,这允许您在界面构建器中将多个 UIViewController 放到同一个 UIViewController 空间中。
他们的搜索栏本身是高度定制的,甚至可能不是基于 UISearchBar。他们可能刚刚创建了一个完全自定义的 UIView,其中包含要输入的 UITextView 和许多其他自定义动画。不过,您可以通过使用 UISearchBar 来实现他们所做的大部分工作。
这样一来,搜索栏仍然是相同的搜索栏,而下面的内容会发生变化。例如,如果您进行搜索,则搜索结果会显示在下方,但相同的 UISearchBar 仍会显示在上方。
如果不使用 ChildViewControllers(我已经放弃该方法),我可能会做的另一种方法是在单个 UIViewController 中简单地使用基于 UIView 的对象。所以顶部的 UISearchBar,可能在父 UIView 中。下面的另一个 UIView 包含提要和其他所有内容。同样,只需使用单个 UISearchBar 进行搜索,并根据需要更改下面 UIView 的内容。