4

我正在创建一个 iOS 7 应用程序,我希望在 NavigationBar 下方有一个 SearchBar,并且我希望它们看起来像一个整体。因此,我需要用相同的颜色(已经完成)为它们着色,并移除 NavigationBar 底部和 SearchBar 顶部的细线。我怎样才能做到这一点?

4

5 回答 5

13

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

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

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

如果您喜欢冒险,“细线”是一个 UIImageView,它是导航栏的子视图。您可以找到它并将其设置为隐藏。例如,这就是 Apple 在其本机日历应用程序中所做的事情。记得在当前视图消失时显示它。

于 2013-09-26T20:52:05.267 回答
7

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

斯威夫特:

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default) 
UINavigationBar.appearance().shadowImage = UIImage() 

目标c:

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

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
于 2015-01-20T19:03:38.343 回答
6

斯威夫特 3:

self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
于 2016-12-13T16:34:52.023 回答
4

删除 UISearchBar 顶部和底部细线的一种方法是将背景图像替换为没有细边框的可拉伸图像。只需使用您选择的颜色制作一个方形 png,然后:

[searchBar setBackgroundImage:[[UIImage imageNamed:@"SearchBarImage"] resizableImageWithCapInsets:UIEdgeInsetsMake( 10, 10, 10, 10)]];

由于背景是实心的,您几乎可以为插图使用任何您想要的值。

于 2014-09-11T21:50:58.063 回答
2

对于那些对如何实现@Leo Natan 的“冒险”方法感兴趣的人,我在我对类似问题的回答中添加了示例代码。

于 2013-11-03T12:31:17.893 回答