将什么子类化(如果有的话)以自定义 UINavigationBar 的外观?

What to subclass (if anything) to customization UINavigationBar's appearance?

我想通过在右侧添加自定义背景颜色、后退图标和按钮来自定义 UINavigationBar 的视图。我已经看到了各种解决方案,并且希望支持 iOS7 和 iOS8+。执行此操作的标准位置在哪里:

感谢阅读!

有几种方法可以做到这一点,尽管我可以提供的唯一参考是 Apple 提供的示例。

导航控制器和它的 UI 栏是非常可定制的,几乎没有什么是不能改变的(从 UI 的角度来看)。

有几个例子只是说将代码转储到 AppDelegate 中。我自己也这样做过。虽然我不能说我遇到过问题,但确实有点 odd/cluttered.

所以在这种情况下,我会按照 Apple shows us all how to do it 的方式进行,并将自定义添加到 VC 的 .m 文件中,您希望在其中查看自定义(您应该下载示例项目并使用它)。

这样做似乎更干净一些,您可以指定哪个 VC 得到哪个外观(而不是让所有 VC 具有相同的导航栏)。

提供一些代码来展示如何进行您所请求的自定义:

自定义背景颜色:

[[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];

自定义返回图标:

[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"some_btn_image.png"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"some_btn_image.png"]];

右侧按钮:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Email"]
                                                                  style:UIBarButtonItemStyleBordered target:self action:@selector(action:)];

self.navigationItem.rightBarButtonItem = addButton;

我用我掌握的数据尽我所能回答了这个问题。我认为一个总体上不错的答案总比没有答案好(我看到你有点不耐烦了。)