使用UINavigationController默认UIToolbar的自定义背景

时间:2010-09-06 14:15:18

标签: uinavigationcontroller ios4 uitoolbar

我想将自己的背景用于我的UIToolbar。

要使用UINavigationBar执行此操作,我刚刚使用此类别覆盖了drawRect方法:

    @implementation UIToolbar (CustomImage)

    - (void)drawRect:(CGRect)rect {
         UIImage *image = [UIImage imageNamed: @"nm010400.png"];
         [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    @end

这段代码完美适用于UINavigationBar,但这不适用于UINavigationController中包含的UIToolbar并使用此行代码启用:

self.navController.toolbarHidden = NO;

任何人都可以帮我解决这个问题吗?我确定UINavigationController使用标准的UIToolbar,为什么这不起作用?!?感谢

3 个答案:

答案 0 :(得分:2)

要创建自定义UI元素,不再需要创建类别。使用IOS 5,您可以通过UIApperance协议更改任何UI元素的外观。您可以正常更改单个UI元素,但在创建主题应用程序时会产生真正的力量。使用这个新协议,您可以更改特定UI元素的所有实例的样式,甚至可以更改特定设置中的UI元素,例如UINavigationController中的UIBarButtonItem。

要更改应用程序中所有UINavigationBars的外观,您可以像这样设置背景,

[[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"myNavBar.png"] forBarMetrics:UIBarMetricsDefault];

根据您使用哪个元素更改可以使用的UINavigationBar的标题属性,您可以更改不同的属性,

[[UINavigationBar appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor whiteColor], UITextAttributeTextColor, 
  [UIFont fontWithName:@"MarkerFelt-Thin" size:24], UITextAttributeFont, nil]];

你也可以在其他UI元素上使用它,以便更改你可以调用的UIToolbar的所有实例的背景

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"myToolBar.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

希望这会有所帮助。

答案 1 :(得分:1)

试试这篇文章: How do you add more than one UIBarButton on UINavigationItem.rightBarButtonItem (or leftBarButtonItem)?

我还发现你必须设置你的UIToolbar背景:

    [toolbar setBackgroundColor:[UIColor clearColor]];

答案 2 :(得分:1)

在自定义UINavigationController的viewDidLoad中使用以下代码:

[self.toolbar setBackgroundImage:[UIImage imageNamed:@"mytoolbarbg.png"] 
              forToolbarPosition:1 
              barMetrics:UIBarMetricsDefault];