我正在尝试设计如何使用故事板设置自定义导航栏。我已将导航栏直接添加到我的应用程序中的视图控制器。
VC不直接位于导航控制器堆栈中,但会按原样显示。作为应用程序的主要点。应用程序将使用相同的导航栏。
我想在整个应用程序中设置导航栏的样式。以前我在导航控制器中使用了以下内容,但现在不是,并且将不会实际保留在导航堆栈中,因为不需要。
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
现在将这个项目简单地添加到VC中,这样做的正确方法是什么?该栏也将被添加到其他VC,因此它应该可以重复使用。我试图继承UINavigationBar并在导航栏的故事板中更改它,但不知道如何实现样式。
我试图更改此子类上的drawRect方法,但不会发生更改。我无法直接从Apple找到任何关于如何对其进行子类化并添加样式的文档。
答案 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];