使用 UINavigationController 默认 UIToolbar 的自定义背景
Posted
技术标签:
【中文标题】使用 UINavigationController 默认 UIToolbar 的自定义背景【英文标题】:Use custom background with UINavigationController default UIToolbar 【发布时间】:2010-09-06 14:15:17 【问题描述】:我想为我的 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 那么为什么这不起作用?!?谢谢
【问题讨论】:
【参考方案1】:要创建自定义 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];
希望这会有所帮助。
【讨论】:
【参考方案2】:在您的自定义 UINavigationController 的 viewDidLoad 中使用以下代码:
[self.toolbar setBackgroundImage:[UIImage imageNamed:@"mytoolbarbg.png"]
forToolbarPosition:1
barMetrics:UIBarMetricsDefault];
【讨论】:
以上是关于使用 UINavigationController 默认 UIToolbar 的自定义背景的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationcontroller 中未使用的视图会发生啥?
使用 push segue 时 UINavigationController 是不是强制
UINavigationController - 使用 UIBlurEffect 清除背景
一起使用 UITabBarController 和 UINavigationController