在iOS中使用自定义导航栏

时间:2012-07-23 19:36:51

标签: objective-c ios ios5

我在.xib中添加了一个导航栏。 我这样做是因为我想定制很多东西。我希望我的导航控制器在该屏幕中使用该导航栏。

我创建了名为navBar的插座并执行了:

[self.navigationController.navigationBar = navBar;

但它说导航栏是只读的。是否可以将我现有的导航控制器与我添加到屏幕的导航栏链接起来?

3 个答案:

答案 0 :(得分:1)

听起来你可能实际上并不想使用UINavigationBar。正如它在参考文档中所述:

  

UINavigationBar类实现用于导航分层内容的控件。它是一个条形图,通常显示在屏幕顶部,包含用于在层次结构中上下导航的按钮。主要属性是左(后)按钮,中心标题和可选的右按钮。您可以为每个选项指定自定义视图。

因此,如果你计划的自定义设置不仅仅是添加按钮,更改它的颜色/背景,不透明度,隐藏等等。你可能最好创建一个模仿外观和放大器的UIView。 ;感觉导航栏。

以下是如何提供your UIView that gradient look of a navigation bar的示例。

它更加灵活,实际上很容易做到但是你在你面前有很多阅读和测试:)。

如果它只是按钮而你想要添加你,那么最好不要使用UIToolbar代替

答案 1 :(得分:0)

你做不到。由于导航控制器的导航栏嵌入了 lot 设置,因此它是一个只读属性,您无法更改它。

您要通过界面构建​​器实现的目标是什么?我的意思是,使用最新的API,通过自定义原始navcontroller的导航栏,通过几行代码完成所需的一切应该很简单。

答案 2 :(得分:0)

您不会在界面构建器中管理导航栏。此外,您不会尝试设置导航控制器的navigationBar属性。

要进行更改,您可以更改navigationBar的navigationItem属性

[self.navigationController.navigationBar setItems:newNavItems];

您还可以对navigationBar进行其他更改,例如设置背景图片或使其变为半透明

self.navigationController.navigationBar.translucent = true;
[self.navigationController.navigationBar setBackgroundImage:img forBarMetrics:barMetrics];