iOS 6 中的导航栏看起来像 iOS 7 中的栏

Posted

技术标签:

【中文标题】iOS 6 中的导航栏看起来像 iOS 7 中的栏【英文标题】:Navigation bar in iOS 6 look like bar in iOS 7 【发布时间】:2013-10-04 10:57:04 【问题描述】:

有没有办法让 ios 6 中的导航栏元素(后退按钮)看起来像 iOS 7 中的导航栏元素? 还有按钮和其他 iOS 7 UI 元素。

【问题讨论】:

IOS 6可以自定义工具栏 我知道,但有没有更简单的方法?例如,我需要在后退按钮中使用图像使其看起来像 iOS 7 【参考方案1】:

我建议不要将代码放入您需要自定义的每个视图控制器中,而是通过将类似这样的内容放入 App Delegate 中的 application:didFinishLaunchingWithOptions: 方法来为整个应用程序执行此操作

// Nav bar
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 5, 10, 5)] forBarMetrics:UIBarMetricsDefault];

// Back buttons
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"backNavButton.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

// Toolbar
[[UIToolbar appearance] setBackgroundImage:[[UIImage imageNamed:@"toolbar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 5, 10, 5)] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

【讨论】:

Tnx。我会尽快回复的 它非常适合我。顺便问一下,作为后退按钮背景的图片必须是多大的尺寸? @KirillBazarov 大小由您决定,但通常 Apple 建议使图像可拉伸(使用我在上面示例中使用的 resizableImageWithCapInsets 方法),以便它们可以根据内容扩展/收缩后退按钮文字说 可调整大小的图像样本:UIImage *backImg = [UIImage imageNamed:@"navback.png"]; UIImage *resizableBackImg = [backImg resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 1)];//top,left,bottom, right; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:resizableBackImg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 请注意,你们这些cmets的顺序不对,应该是右上左下。【参考方案2】:

你可以像这样设置背景图片来自定义导航栏

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"topbar.png"] forBarMetrics:UIBarMetricsDefault];

您可以像这样使用 setLeftBarButtonItems 方法添加自定义栏。

[self.navigationItem setLeftBarButtonItems:];

【讨论】:

以上是关于iOS 6 中的导航栏看起来像 iOS 7 中的栏的主要内容,如果未能解决你的问题,请参考以下文章

让导航栏与iOS 7中的状态栏重叠

iOS 7 中的视图移动到导航栏上方,但在 iOS 6 中可以正常工作

如何在 iOS 7 中使导航栏透明? [复制]

在 iOS 7 中让导航栏与状态栏重叠

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

iOS 7 导航栏隐藏内容