如何删除UINavigationBar和UISearchBar发际线

Gui*_*rme 4 uinavigationbar uisearchbar ios7

我正在创建一个iOS 7应用程序,我希望在NavigationBar下面有一个SearchBar,我希望它们看起来像一个单件.因此,我需要使用相同的颜色(已经完成)对它们进行着色并删除NavigationBar底部和SearchBar顶部的发际线.我怎样才能做到这一点?

Leo*_*ica 13

正式来说,这只能通过将shadowImagenavigationBar设置为空图像来实现.但是,仔细看看文档,据说:

要显示自定义阴影图像,还必须使用setBackgroundImage:forBarMetrics:方法设置自定义背景图像.如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像.

通过使用自定义背景图像,您将失去模糊的背景半透明效果.

如果您喜欢冒险,"发际线"是UIImageView,它是导航栏的子视图.您可以找到它并将其设置为隐藏.例如,这就是Apple在其原生日历应用中所做的事情.记得在当前视图消失时显示它.

  • 我只需使用背景图像即可删除搜索栏。 (2认同)

Nit*_*esh 7

在AppDelegate中使用以下代码(didFinishLaunchingWithOptions)

斯威夫特:

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default) 
UINavigationBar.appearance().shadowImage = UIImage() 
Run Code Online (Sandbox Code Playgroud)

目标c:

    [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
                                  forBarPosition:UIBarPositionAny
                                      barMetrics:UIBarMetricsDefault];

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
Run Code Online (Sandbox Code Playgroud)


Val*_*riy 6

斯威夫特3:

self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
Run Code Online (Sandbox Code Playgroud)

  • 搜索并尝试了很多不同的解决方案.这是唯一一个使用UISearchController的方法. (2认同)