使用Storyboard设置自定义导航栏

时间:2013-04-30 14:45:35

标签: ios ios5 uinavigationcontroller uinavigationbar uinavigationitem

我正在尝试设计如何使用故事板设置自定义导航栏。我已将导航栏直接添加到我的应用程序中的视图控制器。

VC不直接位于导航控制器堆栈中,但会按原样显示。作为应用程序的主要点。应用程序将使用相同的导航栏。

我想在整个应用程序中设置导航栏的样式。以前我在导航控制器中使用了以下内容,但现在不是,并且将不会实际保留在导航堆栈中,因为不需要。

[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];

现在将这个项目简单地添加到VC中,这样做的正确方法是什么?该栏也将被添加到其他VC,因此它应该可以重复使用。我试图继承UINavigationBar并在导航栏的故事板中更改它,但不知道如何实现样式。

我试图更改此子类上的drawRect方法,但不会发生更改。我无法直接从Apple找到任何关于如何对其进行子类化并添加样式的文档。

3 个答案:

答案 0 :(得分:2)

好吧,我可以告诉你什么对我有用:

也会对navigationBar和UINavigationController进行子类化,因此在其initWithCoder中使用setValue赋值:forKey

- (id)initWithCoder:(NSCoder *)aDecoder {
    if(!(self = [super initWithCoder:aDecoder])) return nil;

    CDANavigationBar *navBar = [[CDANavigationBar alloc] init];
    [self setValue:navBar forKey:@"navigationBar"];

    return self;
}

在你的StoryBoard中,你将UINavigationController分配给你自己的。

答案 1 :(得分:2)

在Xcode 5(可能是4)中,您可以将UINavigationController的UINavigationBar的类更改为您自己的自定义类。然后在initWithCoder中根据需要添加自定义:。

答案 2 :(得分:1)

您可以尝试以下内容:

[[UINavigationBar appearanceWhenContainedIn:[YourViewController1 class],
                                            [YourViewController2 class],  nil]  
                         setBackgroundImage:[UIImage imageNamed:@"YourImageName"] 
                              forBarMetrics:UIBarMetricsDefault];