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

发布于 2024-09-17 17:42:52 字数 610 浏览 5 评论 0原文

我想为我的 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,所以为什么这不起作用?!?谢谢

I want to use my self background for my UIToolbar.

To do that with the UINavigationBar I've just used this category with the override of the drawRect method:

    @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

This piece of code works perfectly for the UINavigationBar but this does not work for the UIToolbar that is inncluded in the UINavigationController and enabled with this line o code:

self.navController.toolbarHidden = NO;

Can anyone help me with the problem? I' m sure that the UINavigationController use a standard UIToolbar so why this not works?!? thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

呆萌少年 2024-09-24 17:42:52

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

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

[[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];

希望这会有所帮助。

To create custom UI elements there is no need to create categories anymore. With IOS 5 you can change the appearance of any UI element through the UIApperance protocol. You can change individual UI elements as normal but the real power comes when you are creating a themed application. Using this new protocol you can change the style of all instances of a particular UI element or even a UI element in a particular setting such as a UIBarButtonItem in a UINavigationController.

To change the appearance of all of the UINavigationBars in your application you can set the background like so,

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

you change different attributes depending on which element you are using to change the title attributes of the UINavigationBar you can use,

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

you can also use this on other UI elements so to change the background on all instances of the UIToolbar you can call

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

Hope this helps.

澉约 2024-09-24 17:42:52

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

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

In your custom UINavigationController's viewDidLoad use the following code:

[self.toolbar setBackgroundImage:[UIImage imageNamed:@"mytoolbarbg.png"] 
              forToolbarPosition:1 
              barMetrics:UIBarMetricsDefault];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文