3.5 工具条
3.5.1 工具条的显示
从iPhone OS 3.0开始,通过调用UIViewController的setToolbarItems:animated:方法可以简单地在画面中追加工具条。下面是简单的实例代码。
// 工具条左侧显示的按钮 UIBarButtonItem* button1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButt onSystemItemRefresh target:self action:@selector(buttonDidPush)] autorelease]; // 自动伸缩按钮以及按钮间的空白 UIBarButtonItem*spacer = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarBut tonSystemItemFlexibleSpace target:nil action:nil ] autorelease]; // 工具条右侧显示的按钮 UIBarButtonItem* button2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarBut tonSystemItemUndo target:self action:@selector(buttonDidPush)] autorelease]; // 全部保存到NSArray中 NSArray*buttons = [NSArray arrayWithObjects:button1,spacer,button2,nil]; // 将准备好的NSArray作为工具条的项目设置进去 [self setToolbarItems:buttons animated:YES];
首先,如果要显示工具条,必须将UINavigationController的toolbarHidden属性设置为NO(也可调用setToolBarHidden:animated:方法进行设置)。但是这样只会显示一个空的工具条,必须通过调用UIViewController的setToolbarItems:animated:方法在工具条中设置各种按钮项目(UIBarButtonItem)。实例代码执行后,会显示如图3-19所示的画面,在画面的下方显示设置的工具条。
图3-19 工具条实例
3.5.2 工具条的自动隐藏
上一小节介绍了工具条的显示方法。但是,一旦工具条显示,只要没有明确隐藏它,跳转到下一画面后,工具条仍然会保持显示状态,如图3-20所示。
图3-20 画面跳转后工具条仍然显示
有的时候并不希望工具条一直显示着。此时就要用到UIViewController的hidesBottomBarWhenPushed属性。在UINavigationController中调用pushViewController方法跳转到下一个画面前,将此画面的hidesBottomBarWhenPushed属性设置为YES后,以后的画面将隐藏工具条。设置toolbarHidden属性或者调用setToolbar Hidden:animated:方法也能实现隐藏工具条,但是使用hidesBottomBarWhenPushed属性后,当再次返回到原画面时工具条将自动显示,而上述两种方式将一直隐藏工具条。实现效果如图3-21所示。
图3-21 使用hidesBottomBarWhenPushed属性后的效果
注意:hidesBottomBarWhenPushed属性仅仅是在画面跳转的时候决定是否隐藏工具条。画面跳转后,如果将UINavigationController的toolbarHidden属性设置成了NO,程序还会以后者的设置优先。
3.5.3 向工具条中追加按钮
关于向工具条中追加按钮的知识,请参照下面第3.6节的介绍。
3.5.4 工具条的颜色
可以通过改变UIToolbar类的tintColor属性,改变导航条的背景颜色。以下是实例代码。
// 将工具条变成蓝色 self.navigationController.toolbar.tintColor = [UIColor blueColor];
此代码的执行结果如图3-22所示(图中工具条的背景实际为蓝色)。
图3-22 改变工具条的颜色