一个导航风格(风格属性)栏可以容纳很多种不同类型的对象。你刚刚学过了如何将一个分段控件作为标题试图加入到导航栏中,来向用户呈现一组子类别。 另一个用于导航栏的流行UI组件是UIToolbar对象。工具栏可以容纳一组自定义的按钮,其中可以包括标准系统按钮,例如书签和搜索等按钮。许多预置 的iPhone应用程序,例如Safari和Mail,都使用工具栏来对导航栏的功能进行扩展。
在显示工具栏之前,你必须首先创建打算在工具栏上显示的按钮。你需要用Cocoa的NSMutableArray方法,将每个按钮都添加到一个数组中:
1. NSMutableArray *buttons = [ [ NSMutableArray alloc ] init ];
图像按钮与文字按钮
最常见类型的按钮显示的要么是图像,要么就是文字。这两种类型的按钮都可以作为UIBarButtonItem对象来创建。不过,你得用不同的函数 来初始化这两种按钮。初始化图像按钮要用initWithImage方法,而初始化标准的文字按钮则使用initWithTitle方法:
1. UIBarButtonItem *buttonImage = [ [ UIBarButtonItem alloc ] initWithImage:
2. [ UIImage imageNamed: @"button.png" ]
3. style: UIBarButtonItemStylePlain
4. target: self
5. action: @selector(mySelector:)
6. ];
7.
8. UIBarButtonItem *buttonText = [ [ UIBarButtonItem alloc ] initWithTitle:
9. @"Button"
10. style: UIBarButtonItemStyleBordered
11. target: self
12. action: @selector(mySelector:)
13. ];
系统按钮
除了图像与文字按钮,还有一个小型的系统按钮库,可以创建那些在许多应用程序中都可以见到的标准化的预定义按钮。系统按钮也是UIBarButtonItem对象,可以通过类的initWithBarButtonSystemItem方法来创建。如下例:
1. UIBarButtonItem *myBookmarks = [ [ UIBarButtonItem alloc ]
2. initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks
3. target: self
4. action: @selector(mySelector:)
5. ];
表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 | 图像按钮,上有一个快进图标 |
自定义视图按钮
与导航栏类似,按钮也可以按照自定义视图类来绘制,这样你就可以将任何一种其他类型的视图对象作为按钮来显示:
1. UIBarButtonItem *customButton = [ [ UIBarButtonItem alloc ]
2. initWithCustomView: myView ];
创建工具栏
将所有希望显示出来的按钮都添加到前面创建的buttons数组:
1. [ buttons addObject: buttonImage ];
2. [ buttons addObject: buttonText ];
3. [ buttons addObject: myBookmarks ];
下一步,创建一个UIToolbar对象,并将你的按钮数组赋予工具栏作为项目列表:
1. UIToolbar *toolbar = [ [ UIToolbar alloc ] init ];
2. [ toolbar setItems: buttons animated: YES ];
最后,将你的导航栏的标题视图替换为新创建的工具栏,就像替换成分段控件一样:
- self.navigationItem.titleView = toolbar;
当导航栏显示出来时,工具栏就会出现在它的中央。
调整大小
工具栏会对加入的按钮套用默认大小。如果你希望调整工具栏,让它可以更干净利落地适应导航栏的大小,可以用sizeToFit方法:
- [ toolbar sizeToFit ];
工具栏的风格
就像许多其他基于视图的对象一样,UIToolbar也包含有一个风格属性,名为barStyle。这个属性可以用来调整工具栏的风格,令其与你为导航栏定义的风格相匹配:
- toolbar.barStyle = UIBarStyleDefault;
可以将工具栏的风格设置为三种标准风格主题之一,这些主题也为大多数其他类型的栏状对象所使用,如表3-3所示。
表3-3
风 格 | 描 述 |
UIBarStyleDefault | 默认风格;灰色背景、白色文字 |
UIBarStyleBlackOpaque | 纯黑色背景、白色文字 |
UIBarStyleBlackTranslucent | 透明黑色背景、白色文字 |