iPhone UIKit详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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 改变工具条的颜色