在整个应用程序中添加带有搜索栏的半透明背景视图控制器

时间:2016-01-05 16:13:29

标签: ios objective-c

需要帮助添加搜索栏ViewController,其SearchBar将在NaviagationBar中使用Back按钮(导航搜索我实现 - self.navigationItem.titleView = searchBarView)整个应用程序,但直到它有搜索我想在后台显示以前的ViewController与我在Android中实现的半透明黑色一样:

enter image description here

我可以将半透明的ViewController添加到当前的ViewController:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
[vc setTransitioningDelegate:transitionController];
vc.modalPresentationStyle= UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];

但它正在做的是它在透明的情况下打开SecondViewController而没有NavigationBar,FirstViewController有NavigationBar

当打开SecondViewController时,它应该在NavigationBar中有SearchBar,它不应该像我在Android中实现的那样是透明的。 将有n个ViewController,它将使用NavigationBar和后退按钮添加与Overlay Controller相同的控制器。 请帮助。

2 个答案:

答案 0 :(得分:0)

我找到了一些解决方案,其中包括拍摄视图的快照并将其添加到您的navBar控制器。

来自Apple: https://developer.apple.com/library/ios/qa/qa1817/_index.html

其他有趣的选择: iOS iPhone is it possible to clone UIView and have it draw itself to two UIViews?

答案 1 :(得分:0)

在您的代码片段中,您只需创建新的SecondViewController并将其呈现为模态。它没有导航栏,因为您在没有导航控制器的情况下创建它。 如果你想将SecondViewController与之前的带有导航栏和默认后退按钮的ViewController保持在同一个导航堆栈中,你应该调用:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self presentViewController:vc animated:YES completion:nil];
[self.navigationController pushViewController:vc animated:YES];

要使SecondViewController像半透明,请截取以前的视图控制器,将此图像传递给SecondViewController并像背景一样使用它。您可以将此图像应用于SecondViewController视图上的其他ImageView,或者只需调用:

self.view.backgroundColor = [UIColor colorWithPatternImage:self.backgroundImage];