一个导航风格(风格属性)栏可以容纳很多种不同类型的对象。你刚刚学过了如何将一个分段控件作为标题试图加入到导航栏中,来向用户呈现一组子类别。 另一个用于导航栏的流行UI组件是UIToolbar对象。工具栏可以容纳一组自定义的按钮,其中可以包括标准系统按钮,例如书签和搜索等按钮。许多预置 的iPhone应用程序,例如Safari和Mail,都使用工具栏来对导航栏的功能进行扩展。
在显示工具栏之前,你必须首先创建打算在工具栏上显示的按钮。你需要用Cocoa的NSMutableArray方法,将每个按钮都添加到一个数组中:
- NSMutableArray *buttons = [ [ NSMutableArray alloc ] init ];
图像按钮与文字按钮
最常见类型的按钮显示的要么是图像,要么就是文字。这两种类型的按钮都可以作为UIBarButtonItem对象来创建。不过,你得用不同的函数 来初始化这两种按钮。初始化图像按钮要用initWithImage方法,而初始化标准的文字按钮则使用initWithTitle方法:
- UIBarButtonItem *buttonImage = [ [ UIBarButtonItem alloc ] initWithImage:
- [ UIImage imageNamed: @"button.png" ]
- style: UIBarButtonItemStylePlain
- target: self
- action: @selector(mySelector:)
- ];
- UIBarButtonItem *buttonText = [ [ UIBarButtonItem alloc ] initWithTitle:
- @"Button"
- style: UIBarButtonItemStyleBordered
- target: self
- action: @selector(mySelector:)
- ];
系统按钮
除了图像与文字按钮,还有一个小型的系统按钮库,可以创建那些在许多应用程序中都可以见到的标准化的预定义按钮。系统按钮也是UIBarButtonItem对象,可以通过类的initWithBarButtonSystemItem方法来创建。如下例:
- UIBarButtonItem *myBookmarks = [ [ UIBarButtonItem alloc ]
- initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks
- target: self
- action: @selector(mySelector:)
- ];
表3-2是目前支持的系统按钮,可以在UIBarButtonItem.h头文件中找到。
表3-2
按钮标识符 |
描 述 |
UIBarButtonSystemItemDone |
蓝色文字按钮,标有“Done” |
UIBarButtonSystemItemCancel |
文字按钮,标有“Cancel” |
UIBarButtonSystemItemEdit |
文字按钮,标有“Edit” |
UIBarButtonSystemItemSave |
蓝色文字按钮,标有“Save” |
UIBarButtonSystemItemAdd |
图像按钮,上面有一个Å符号 |
UIBarButtonSystemItemFlexibleSpace |
空白,占用空间大小可变 |
UIBarButtonSystemItemFixedSpace |
空白占位符 |
UIBarButtonSystemItemCompose |
图像按钮,上有一支笔和纸张 |
UIBarButtonSystemItemReply |
图像按钮,上有一个回复箭头 |
UIBarButtonSystemItemAction |
图像按钮,上有一个动作箭头 |
UIBarButtonSystemItemOrganize |
图像按钮,上有一个文件夹以及向下箭头 |
UIBarButtonSystemItemBookmarks |
图像按钮,上有书签图标 |
UIBarButtonSystemItemSearch |
图像按钮,上有spotlight图标 |
UIBarButtonSystemItemRefresh |
图像按钮,上有一个环形的刷新箭头 |
UIBarButtonSystemItemStop |
图像按钮,上有一个停止记号X |
UIBarButtonSystemItemCamera |
图像按钮,上有一个照相机 |
UIBarButtonSystemItemTrash |
图像按钮,上有一个垃圾桶 |
UIBarButtonSystemItemPlay |
图像按钮,上有一个播放图标 |
UIBarButtonSystemItemPause |
图像按钮,上有一个暂停图标 |
UIBarButtonSystemItemRewind |
图像按钮,上有一个倒带图标 |
UIBarButtonSystemItemFastForward |
图像按钮,上有一个快进图标 |
自定义视图按钮
与导航栏类似,按钮也可以按照自定义视图类来绘制,这样你就可以将任何一种其他类型的视图对象作为按钮来显示:
- UIBarButtonItem *customButton = [ [ UIBarButtonItem alloc ]
- initWithCustomView: myView ];
创建工具栏
将所有希望显示出来的按钮都添加到前面创建的buttons数组:
- [ buttons addObject: buttonImage ];
- [ buttons addObject: buttonText ];
- [ buttons addObject: myBookmarks ];
下一步,创建一个UIToolbar对象,并将你的按钮数组赋予工具栏作为项目列表:
- UIToolbar *toolbar = [ [ UIToolbar alloc ] init ];
- [ toolbar setItems: buttons animated: YES ];
最后,将你的导航栏的标题视图替换为新创建的工具栏,就像替换成分段控件一样:
- self.navigationItem.titleView = toolbar;
当导航栏显示出来时,工具栏就会出现在它的中央。
调整大小
工具栏会对加入的按钮套用默认大小。如果你希望调整工具栏,让它可以更干净利落地适应导航栏的大小,可以用sizeToFit方法:
- [ toolbar sizeToFit ];
工具栏的风格
就像许多其他基于视图的对象一样,UIToolbar也包含有一个风格属性,名为barStyle。这个属性可以用来调整工具栏的风格,令其与你为导航栏定义的风格相匹配:
- toolbar.barStyle = UIBarStyleDefault;
可以将工具栏的风格设置为三种标准风格主题之一,这些主题也为大多数其他类型的栏状对象所使用,如表3-3所示。
表3-3
风 格 |
描 述 |
UIBarStyleDefault |
默认风格;灰色背景、白色文字 |
UIBarStyleBlackOpaque |
纯黑色背景、白色文字 |
UIBarStyleBlackTranslucent |
透明黑色背景、白色文字 |