前言

	NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIToolbar : UIView <UIBarPositioning>
@available(iOS 2.0, *) public class UIToolbar : UIView, UIBarPositioning
  • 工具条控件 UIToolbar 用做工具条按钮项(UIBarButtonItem)的容器,可以盛放一个或者多个工具条按钮项,一般放置在界面顶部或者底部。如果要针对工具条按钮项自定义视图,可以使用 UIToolbarDelegate 设置。

1、UIToolbar 的创建

  • Objective-C

    	// 创建 UIToolbar 工具条,工具条上面可以放一些导航专用按钮项
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, 44)];
    [self.view addSubview:toolbar]; // 创建工具条 UIBarButtonItem 按钮项 // 创建编辑按钮
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
    target:self
    action:@selector(editClick)]; // 创建刷新按钮
    UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
    target:self
    action:@selector(refreshClick)]; // 创建弹簧按钮
    UIBarButtonItem *flexibleButton = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
    target:nil
    action:nil]; // 将按钮项添加到工具条,通过数组给工具条设置一些导航按钮
    toolbar.items = @[editButton, flexibleButton, refreshButton];
  • Swift

        // 创建 UIToolbar 工具条,工具条上面可以放一些导航专用按钮项
    let toolbar:UIToolbar = UIToolbar(frame: CGRectMake(0, 20, self.view.bounds.size.width, 44))
    self.view.addSubview(toolbar) // 创建工具条 UIBarButtonItem 按钮项 // 创建编辑按钮
    let editButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Edit,
    target: self,
    action: #selector(UiToolbar.editClick)) // 创建刷新按钮
    let refreshButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Refresh,
    target: self,
    action: #selector(UiToolbar.refreshClick)) // 创建弹簧按钮
    let flexibleButton:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace,
    target:nil,
    action:nil) // 将按钮项添加到工具条,通过数组给工具条设置一些导航按钮
    toolbar.items = [editButton, flexibleButton, refreshButton]

2、UIBarButtonItem 的创建

  • Objective-C

    • 系统类按钮

      	/*
      UIBarButtonSystemItemDone, Done
      UIBarButtonSystemItemCancel, Cancel
      UIBarButtonSystemItemEdit, Edit
      UIBarButtonSystemItemSave, Save
      UIBarButtonSystemItemUndo, Undo
      UIBarButtonSystemItemRedo, Redo
      UIBarButtonSystemItemAdd, 加号 图标按钮
      UIBarButtonSystemItemFlexibleSpace, 弹簧 按钮,将 button 推向两边
      UIBarButtonSystemItemFixedSpace, 弹簧 按钮,将 button 推向两边,
      可设间距 fixedSpaceButton.width = 50;
      UIBarButtonSystemItemCompose, 撰写 图标按钮
      UIBarButtonSystemItemReply, 答复 图标按钮
      UIBarButtonSystemItemAction, 详情 图标按钮
      UIBarButtonSystemItemOrganize, 文件夹 图标按钮
      UIBarButtonSystemItemBookmarks, 书籍 图标按钮
      UIBarButtonSystemItemSearch, 搜索 图标按钮
      UIBarButtonSystemItemRefresh, 刷新 图标按钮
      UIBarButtonSystemItemStop, X 号 图标按钮
      UIBarButtonSystemItemCamera, 相机 图标按钮
      UIBarButtonSystemItemTrash, 删除 图标按钮
      UIBarButtonSystemItemPlay, 播放 图标按钮
      UIBarButtonSystemItemPause, 暂停 图标按钮
      UIBarButtonSystemItemRewind, 快退 图标按钮
      UIBarButtonSystemItemFastForward, 快进 图标按钮
      */
      UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
      target:self
      action:@selector(buttonClick)];



    • 文本类按钮

      	/*
      UIBarButtonItemStylePlain 默认按钮风格;按下时会闪动
      UIBarButtonItemStyleBordered 与 UIBarButtonItemStylePlain 相同,但显示的按钮有边框, NS_ENUM_DEPRECATED_IOS
      UIBarButtonItemStyleDone 显示一个蓝色按钮,提醒用户编辑完毕时应该点触(tap)该按钮。
      */ UIBarButtonItem *titleBtn = [[UIBarButtonItem alloc] initWithTitle:@"按钮"
      style:UIBarButtonItemStylePlain
      target:self
      action:@selector(buttonClick)];
    • 图片类按钮

      	// 对图片进行处理,以原图的样式显示,否则显示为蓝色块
      UIImage *image1 = [[UIImage imageNamed:@"001"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
      UIBarButtonItem *imageBtn1 = [[UIBarButtonItem alloc] initWithImage:image1
      style:UIBarButtonItemStylePlain
      target:self
      action:@selector(buttonClick)]; UIImage *image2 = [[UIImage imageNamed:@"002"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
      UIImage *image3 = [[UIImage imageNamed:@"004"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
      UIBarButtonItem *imageBtn2 = [[UIBarButtonItem alloc] initWithImage:image2
      landscapeImagePhone:image3
      style:UIBarButtonItemStyleDone
      target:self
      action:@selector(buttonClick)];
    • 自定义视图类按钮

      	UIProgressView *progress = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
      progress.frame = CGRectMake(0, 0, 80, 20);
      progress.progress = 0.5;
      progress.progressTintColor = [UIColor greenColor];
      progress.trackTintColor = [UIColor redColor]; UIBarButtonItem *viewBtn = [[UIBarButtonItem alloc] initWithCustomView:progress];
  • Swift

    • 系统类按钮

      	/*
      UIBarButtonSystemItemDone, Done
      UIBarButtonSystemItemCancel, Cancel
      UIBarButtonSystemItemEdit, Edit
      UIBarButtonSystemItemSave, Save
      UIBarButtonSystemItemUndo, Undo
      UIBarButtonSystemItemRedo, Redo
      UIBarButtonSystemItemAdd, 加号 图标按钮
      UIBarButtonSystemItemFlexibleSpace, 弹簧 按钮,将 button 推向两边
      UIBarButtonSystemItemFixedSpace, 弹簧 按钮,将 button 推向两边,
      可设间距 fixedSpaceButton.width = 50;
      UIBarButtonSystemItemCompose, 撰写 图标按钮
      UIBarButtonSystemItemReply, 答复 图标按钮
      UIBarButtonSystemItemAction, 详情 图标按钮
      UIBarButtonSystemItemOrganize, 文件夹 图标按钮
      UIBarButtonSystemItemBookmarks, 书籍 图标按钮
      UIBarButtonSystemItemSearch, 搜索 图标按钮
      UIBarButtonSystemItemRefresh, 刷新 图标按钮
      UIBarButtonSystemItemStop, X 号 图标按钮
      UIBarButtonSystemItemCamera, 相机 图标按钮
      UIBarButtonSystemItemTrash, 删除 图标按钮
      UIBarButtonSystemItemPlay, 播放 图标按钮
      UIBarButtonSystemItemPause, 暂停 图标按钮
      UIBarButtonSystemItemRewind, 快退 图标按钮
      UIBarButtonSystemItemFastForward, 快进 图标按钮
      */
      let done:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done,
      target: self,
      action: #selector(UiToolbar.buttonClick))



    • 文本类按钮

      	/*
      case Plain 默认按钮风格;按下时会闪动
      case Bordered 与 UIBarButtonItemStylePlain 相同,但显示的按钮有边框, NS_ENUM_DEPRECATED_IOS
      case Done 显示一个蓝色按钮,提醒用户编辑完毕时应该点触(tap)该按钮。
      */ let titleBtn:UIBarButtonItem = UIBarButtonItem(title: "按钮",
      style: UIBarButtonItemStyle.Plain,
      target: self,
      action: #selector(UiToolbar.buttonClick))
    • 图片类按钮

      	// 对图片进行处理,以原图的样式显示,否则显示为蓝色块
      let image1:UIImage = UIImage(named: "001")!.imageWithRenderingMode(.AlwaysOriginal)
      let imageBtn1:UIBarButtonItem = UIBarButtonItem(image: image1,
      style: UIBarButtonItemStyle.Plain,
      target: self,
      action: #selector(UiToolbar.buttonClick)) let image2:UIImage = UIImage(named: "002")!.imageWithRenderingMode(.AlwaysOriginal)
      let image3:UIImage = UIImage(named: "004")!.imageWithRenderingMode(.AlwaysOriginal)
      let imageBtn2:UIBarButtonItem = UIBarButtonItem(image: image2,
      landscapeImagePhone: image3,
      style: UIBarButtonItemStyle.Plain,
      target: self,
      action: #selector(UiToolbar.buttonClick))
    • 自定义视图类按钮

      	let progress:UIProgressView = UIProgressView(progressViewStyle: UIProgressViewStyle.Bar)
      progress.frame = CGRectMake(0, 0, 80, 20)
      progress.progress = 0.5
      progress.progressTintColor = UIColor.greenColor()
      progress.trackTintColor = UIColor.redColor() let viewBtn:UIBarButtonItem = UIBarButtonItem(customView: progress)

3、navigation 中的 toolBar

  • navigationController 自带的 toolbar 属性是所有添加在 navigationController 上的视图所共用的,是属于 navigationController 的,不是属于每个 ViewController 的,但 toolbar 上显示的内容的是每个 ViewController 的,需要在每个 ViewController 上单独设置。

  • toolbar 的显示状态会被带到已经显示过的 ViewController 上,跳转到未显示过的 ViewController 时,toolbar 再次被隐藏。

  • Objective-C

    	// 显示 toolBar,toolBar 默认是隐藏的,首先需要让它显示出来,默认在屏幕的最下方
    self.navigationController.toolbarHidden = NO; // 向 toolBar 添加按钮,最多只能显示 8 个,往 self.navigationController.toolbarItems 上添加时无用
    self.toolbarItems = buttonArray;
  • Swift

    	// 显示 toolBar,toolBar 默认是隐藏的,首先需要让它显示出来,默认在屏幕的最下方
    self.navigationController!.toolbarHidden = false // 向 toolBar 添加按钮,最多只能显示 8 个,往 self.navigationController.toolbarItems 上添加时无用
    self.toolbarItems = buttonArray

iOS - UIToolbar的更多相关文章

  1. iOS:UIToolBar控件的使用

    UIToolBar控件:是经常使用的一个工具条控件,虽然在上面可以添加子控件,但是toolbar中只能添加UIBarButtonItem类型的子控件,其他子控件会被包装成这种类型的,例如UIButto ...

  2. iOS UIToolBar的使用

    UIToolBar存在于UINavigationController导航栏控制器中.并且默认被隐藏. 当设置UIToolBar显示,或者存在UITabBarController且tabbar被隐藏的时 ...

  3. iOS:UIToolBar、toolbarItems、BarButtonItem的几种关系

    工具栏:ToolBar 工具栏项目:Bar Button Item 调节按钮位置的固定调节:Fixed Space Bar Button Item 调节按钮位置的灵活调节:Flexible Space ...

  4. ios 开发UI篇— UIToolbar

    前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIToolbar : UIView <UIBarPositioning& ...

  5. iOS 开发 中级:UIToolbar,UINavigationBar,UITabBar,UIBarButtonItem,UITabBarItem自定义方法总结

    原文:  http://blog.csdn.net/songrotek/article/details/8692866?utm_source=tuicool 对于UIToolbar,UINavigat ...

  6. iOS开发——UI篇Swift篇&UIToolbar

    UIToolbar class UIToolBarUISearchBar: UIViewController,UISearchBarDelegate { var titleString:String! ...

  7. [iOS基础控件 - 6.10.3] DatePicker & UIToolBar

    A.需求 1. 学习DatePicker的基本配置 2.使用TextField召唤指定类型的输入键盘View,这里使用DatePicker 3.给输入键盘上方加上一个UIToolBar,实现如关闭键盘 ...

  8. 【iOS发展-70】点菜系统案例:使用文本框inputView和inputAccessoryView串联UIPickerView、UIDatePicker和UIToolBar

    (1)效果 (2)先在storyboard中设计界面,然后源码(直接在ViewController中码) #import "ViewController.h" @interface ...

  9. 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...

随机推荐

  1. python正则表达式之元字符介绍

    python中元字符及其含义如下: 元字符 含义 . 匹配除换行符以外的任意一个字符 ^ 匹配行首 $ 匹配行尾 ? 重复匹配0次或1次 * 重复匹配0次或更多次 + 重复匹配1次或更多次 {n,} ...

  2. SQL-PIVOT 数据透视 行列转换

    -- 数据透视 -- PIVOT: 行转列 SELECT * FROM (     SELECT N'张三' AS 姓名, N'语文' AS 课程,70 AS 分数 UNION     SELECT ...

  3. 2015-11-04 报表(c#部分)(Datatable 查询,弹出日期控件,输入是否整数)

    using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq ...

  4. LA 3704 Cellular Automaton

    题意概述: 等价地,本题可以转化为下面的问题: 考虑$n \times n$的$0-1$矩阵$A$,在第$i$行上第$[-d+i, d+i]$(模$n$意义下)列对应的元素为$1$,其余为$0$.求$ ...

  5. mongoDB Replica集群配置(1主+1从+1仲裁)

    1.mongoDB节点介绍 主节点(Primary) 在复制集中,主节点是唯一能够接收写请求的节点.MongoDB在主节点进行写操作,并将这些操作记录到主节点的oplog中.而从节点将会从oplog复 ...

  6. C#中进行单元测试

    首先创建一个项目,写一段待测的程序: namespace ForTest { public class Program { static void Main(string[] args) { } pu ...

  7. 2016 Al-Baath University Training Camp Contest-1 F

    Description Zaid has two words, a of length between 4 and 1000 and b of length 4 exactly. The word a ...

  8. mvcAPI (入门 1)

    步骤: 1)建立order 类 2)建立OrderEntity类 3)创建控制器API 这时候能看到Json 格式的数据啦 5)想在网页或客户端显示 添加一个网页 如下: <!DOCTYPE h ...

  9. [C语言](*p)++与 ++(*p)与 *p++ 与 ++*p

    首先亮明个人观点,不要认为这样写都算写的不好,还强调大神一般不写这种代码,可读性不高 其实是你的C语言基础太差,读不懂,大神还真的就是这么写的.可以看看C语言库函数中的一些写法 *P++ :*和++都 ...

  10. linux下的./本质

    不知道从什么时候对于./的感觉就是这是一条运行命令,因为你要运行某个文件的时候就用./ 但是这个显然是错误的./表述的是当前目录 .就是表示当前目录的.至于为什么运行当前目录下的 文件需要加上./原因 ...