Swift - 工具条(UIToolbar)的用法
作者:hangge | 2015-01-20 15:11
(本文代码已升级至Swift3)
1,UIBarButtonItem是工具条按钮,有如下5种init初始化方法:
(2)普通图片按钮,但提供另一个备选图像供横屏使用
(3)普通文本按钮
(4)使用预置按钮:如撤销,重做,编辑等(总共有25个样式)
(5)使按钮变成任意一个UIView
2,使用UIBarButtonItem还可以创建间隔项
(1)弹性间隔(会尽可能往两端伸长)
1,UIBarButtonItem是工具条按钮,有如下5种init初始化方法:
(1)初始化为普通图片按钮
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建一个浏览器工具条,并设置它的大小和位置
let browserToolbar = UIToolbar(frame:CGRect(x:0, y:20, width:320, height:44))
// 将工具条添加到当前应用的界面中
self.view.addSubview(browserToolbar)
//创建后退按钮
let btnback = UIBarButtonItem(image:UIImage(named:"back.png"),
style: .plain, target:self,
action:#selector(ViewController.backClick(_:)))
//第一个分隔按钮
let btngap1 = UIBarButtonItem(barButtonSystemItem:.flexibleSpace,
target:nil,
action:nil)
// 创建前进按钮 UIBarButtonItem
let btnforward = UIBarButtonItem(image:UIImage(named:"forward.png"),
style: .plain, target:self,
action:#selector(ViewController.forwardClick(_:)))
// 第二个分隔按钮,创建一个可伸缩的UIBarButtonItem
let btngap2 = UIBarButtonItem(barButtonSystemItem:.flexibleSpace,
target:nil,
action:nil)
//添加按钮
browserToolbar.setItems([btnback, btngap1, btnforward, btngap2], animated: false)
}
func backClick(_ sender:UIBarButtonItem) {
//后退
print("后退按钮点击")
}
func forwardClick(_ sender:UIBarButtonItem) {
//前进
print("前进按钮点击")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
let btnback = UIBarButtonItem(image:UIImage(named:"back1.png"),
landscapeImagePhone:UIImage(named:"back2.png"),
style:.plain, target:self,
action:#selector(ViewController.backClick(_:)))
let btnback = UIBarButtonItem(title:"返回", style:.plain, target:self,
action:#selector(ViewController.backClick(_:)))
Custom:默认样式
Flexible Space:自动伸缩的空白占位符
Fixed Space:固定宽度的占位元素
Add:“+”加号样式
Edit:Edit文字样式
Done:Done文字样式
Cancel:Cancel文字样式
Save:Save文字样式
Undo:Undo文字样式
Redo:Redo文字样式
Compose:背景矩形插支笔的图标样式
Reply:返回箭头的图标样式
Action:背景矩形加上一个向上箭头的图标样式
Organize:文件夹的图标样式
Trash:垃圾桶的图标样式
Bookmarks:书的图标样式
Search:放大镜的图标样式
Refresh:顺时针圆形箭头的图标样式
Stop:一个×的图标样式
Camera:一个照相机的图标样式
Play:向右三角形代表播放的图标样式
Pause:两条竖线代表播放的图标样式
Rewind:向左两个三角代表回退的图标样式
Fast Forward:向右两个三角代表快进的图标样式
Page Curl:页面旋转的图标样式。在Xcode 6中似乎不显示
示例如下:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建一个浏览器工具条,并设置它的大小和位置
let browserToolbar = UIToolbar(frame:CGRect(x:0, y:20, width:320, height:44))
// 将工具条添加到当前应用的界面中
self.view.addSubview(browserToolbar)
let btn1 = UIBarButtonItem(barButtonSystemItem:.compose,
target:nil, action:nil);
let btn2 = UIBarButtonItem(barButtonSystemItem:.add,
target:nil, action:nil);
let btn3 = UIBarButtonItem(barButtonSystemItem:.flexibleSpace,
target:nil, action:nil);
let btn4 = UIBarButtonItem(barButtonSystemItem:.reply,
target:nil, action:nil);
browserToolbar.setItems([btn1,btn2,btn3,btn4], animated: false)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
(5)使按钮变成任意一个UIView
2,使用UIBarButtonItem还可以创建间隔项
(1)弹性间隔(会尽可能往两端伸长)
let btngap1 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,
target:nil, action:nil)
(2)固定间隔(自定义宽度)
let btngap1 = UIBarButtonItem(barButtonSystemItem: .fixedSpace,
target:nil, action:nil)
btngap1.width = 50
全部评论(3)
toolbar可以用在输入法头部吗?
站长回复:可以,你要监听虚拟键盘的通知。在虚拟键盘出现时,计算好键盘头部的位置,然后在这个位置添加toolbar。虚拟键盘消失时,移除toolbar。
为什么事件抓不到。。。尴尬
站长回复:这个写的比较早,到了Swift3语法有变。我现已把文章代码修改了,你可以再看下。
FixedSpace这个属性没有改变效果呀
站长回复:我又测试了下是有效果的,你检查下代码,看是不是哪里写的有问题。