//

// ViewController.swift

// UILabelTest

//

// Created by mac on 15/6/23.

// Copyright (c) 2015年 fangyuhao. All rights reserved.

//

import UIKit

class ViewController: UIViewController,UIWebViewDelegate,UITextFieldDelegate{

@IBOutlet weak var btngo: UIButton!

@IBOutlet weak var webview: UIWebView!

@IBOutlet weak var txturl: UITextField!

var loadIndicator:UIActivityIndicatorView!

  1. //进度条计时器
  2. var ptimer:NSTimer!
  3. //进度条控件
  4. var progBar:UIProgressView!
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. self.webview.delegate = self
  8. loadIndicator = UIActivityIndicatorView(frame: CGRectMake(100, 100, 32, 32))
  9. loadIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
  10. self.view.addSubview(loadIndicator)
  11. txturl.delegate = self
  12. //构建浏览器工具条
  13. setupBrowserToolbar()
  14. }
  15. func setupBrowserToolbar(){
  16. //创建一个浏览器工具条,并设置它的大小和位置
  17. var browserToolbar = UIToolbar(frame: CGRectMake(0, 20, 320, 44));
  18. //将工具条添加到当前应用的界面中
  19. self.view.addSubview(browserToolbar)
  20. //创建图片工具条,但是不是直接使用文件名,
  21. var path = NSBundle.mainBundle().pathForResource("back", ofType: "png")
  22. var urlStr = NSURL.fileURLWithPath(path!)
  23. var data = NSData(contentsOfURL:urlStr!)
  24. var btnback = UIBarButtonItem(image: UIImage(data: data!), style: UIBarButtonItemStyle.Bordered, target: self, action: Selector("backClicked:"))
  25. //第一个分隔按钮
  26. var btngap1 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target:nil, action: nil)
  27. //创建前进按钮
  28. var btnforward = UIBarButtonItem(image: UIImage(named: "forward.png"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("forwardClicked:"))
  29. //第二个分隔按钮
  30. var btngap2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
  31. //创建重新加载按钮
  32. var btnreload = UIBarButtonItem(image: UIImage(named: "reload.png"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("reloadClicked:"))
  33. var btngap3=UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,target: nil, action: nil)
  34. //创建加载停止按钮
  35. var btnstop = UIBarButtonItem(image: UIImage(named: "stop"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("stopClicked:"))
  36. //第四个分隔按钮
  37. var btngap4=UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,target: nil, action: nil)
  38. //创建进度工具条
  39. progBar = UIProgressView(progressViewStyle: UIProgressViewStyle.Bar)
  40. //设置UIProgressview的大小
  41. progBar.frame = CGRectMake(0, 0, 80, 20)
  42. //设置该进度条的初始进度为0
  43. progBar.progress = 0
  44. //创建使用UIView的自定义的UIBarButtonItem
  45. var btnprog = UIBarButtonItem(customView: progBar)
  46. //为工具条设置工具按钮
  47. browserToolbar.setItems([btnback,btngap1,btnforward,btngap2,btnreload,btngap3,btnstop,btngap4,btnprog], animated: true)
  48. //创建计时器对象
  49. ptimer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector("loadProgress"), userInfo: nil, repeats: true)
  50. ptimer.invalidate()
  51. }
  52. func stopClicked(sender:UIBarButtonItem){
  53. webview.stopLoading()
  54. }
  55. func reloadClicked(sender:UIBarButtonItem){
  56. webview.reload()
  57. }
  58. func backClicked(sender:UIBarButtonItem){
  59. webview.goBack()
  60. }
  61. func forwardClicked(sender:UIBarButtonItem){
  62. webview.goForward()
  63. }
  64. func textFieldShouldReturn(textField: UITextField) -> Bool {
  65. txturl.resignFirstResponder()
  66. println("url Changed!")
  67. var url = txturl.text
  68. loadUrl(url)
  69. return true
  70. }
  71. func loadUrl(url:String){
  72. var urlobj = NSURL(string: url)
  73. var request = NSURLRequest(URL: urlobj!)
  74. webview.loadRequest(request)
  75. }
  76. @IBAction func goClicked(sender: UIButton) {
  77. txturl.resignFirstResponder()
  78. var url = txturl.text
  79. loadUrl(url)
  80. }
  81. override func didReceiveMemoryWarning() {
  82. super.didReceiveMemoryWarning()
  83. }
  84. func webViewDidStartLoad(webView: UIWebView) {
  85. progBar.setProgress(0, animated: false)
  86. ptimer.fire()
  87. loadIndicator.startAnimating()
  88. }
  89. func webViewDidFinishLoad(webView: UIWebView) {
  90. loadIndicator.stopAnimating()
  91. progBar.setProgress(1, animated: true)
  92. ptimer.invalidate()
  93. }
  94. func loadProgress(){
  95. //如果进度满了,停止计时器
  96. if(progBar.progress>=1.0){
  97. //停用计时器
  98. ptimer.invalidate()
  99. }else{
  100. //改变进度条的进度值
  101. progBar.setProgress(progBar.progress+0.02, animated: true)
  102. }
  103. }
  104. func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
  105. var alertview = UIAlertView()
  106. alertview.title = "出错"
  107. alertview.message = error.localizedDescription
  108. alertview.addButtonWithTitle("确定")
  109. alertview.show()
  110. }

}

UIToolbar swift的更多相关文章

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

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

  2. Swift - 工具条(UIToolbar)的用法

    1,UIBarButtonItem是工具条按钮,有如下5种init初始化方法: (1)初始化为普通图片按钮 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...

  3. Swift - 使用UIWebView和UIToolbar制作一个浏览器

    使用网页控件(UIWebView)与工具栏控件(UIToolbar),我们可以自制一个小型的浏览器,其功能如下: 1,输入网址,点击“Go”按钮加载网页 2,加载过程中有进度条,同时可以点击停止按钮取 ...

  4. swift - UIToolbar 的用法

    代码如下: 1.声明及初始化 var toolsBar = UIToolbar() toolsBar.frame = CGRect(x:, y:, width:SCREEN_WIDTH, height ...

  5. iOS - UIToolbar

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

  6. iOS开发——UI篇Swift篇&玩转UItableView(一)基本使用

    UItableView基本使用 class ListViewController: UIViewController , UITableViewDataSource, UITableViewDeleg ...

  7. Swift学习之常用UI的使用

    Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...

  8. Swift 全功能的绘图板开发

    要做一个全功能的绘图板,至少要支持以下这些功能: 支持铅笔绘图(画点) 支持画直线 支持一些简单的图形(矩形.圆形等) 做一个真正的橡皮擦 能设置画笔的粗细 能设置画笔的颜色 能设置背景色或者背景图 ...

  9. Swift版音乐播放器(简化版),swift音乐播放器

    这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音 ...

随机推荐

  1. HTML5 CSS3简要教程

    Web 设计师可以使用HTML4和CSS2.1完成一些很酷的东西.我们可以在不使用陈旧的基于table布局的基础上完成文档逻辑结构并创建内容丰富的网站.我们可以在不使用内联<font>和& ...

  2. 移植u-boot.2012.04.01

    /*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc ...

  3. Openvz特点和分析

    OpenVZ是开源软件,是基于Linux平台的操作系统级服务器虚拟化解决方案.OpenVZ采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,Virutozzo是SWsoft公司提供的商业 ...

  4. 字符串匹配KMP算法

    1. 字符串匹配的KMP算法 2. KMP算法详解 3. 从头到尾彻底理解KMP

  5. 搭建高性能计算环境(一)、Linux操作系统的安装和配置

    一般课题组刚开始做计算,往往没有专门的集群,主要用自己的PC机.工作站或者买几台服务器来跑跑:小伙伴们摸索Linux的使用.编译一些开源软件.甚至写点Shell脚本需要耗费很多时间,耽搁了读文献.码论 ...

  6. ParameterDirection参数类型

    IDataParameter[] paramArray = new IDataParameter[]{ AdoHelper.GetParameter("ReturnValue",D ...

  7. Laravel 5 基础(十二)- 认证

    Laravel 出厂已经带有了用户认证系统,我们来看一下 routes.php,如果删除了,添加上: Route::controllers([ 'auth' => 'Auth\AuthContr ...

  8. IOS应用程序生命周期

    一.IOS应用的5种状态 Not Running(非运行状态) 应用没有运行或被系统终止. Inactive(前台非活动状态) 应用正在进入前台状态,但是还不能接受事件处理. Active(前台活动状 ...

  9. 问题记录:android.os.NetworkOnMainThreadException异常

    在MainActivity的主线程中访问网络将会发生异常 查阅资料后发现 Android4.0 以后不允许在主线程进行网络连接

  10. python之poplib库

    pop3能实现访问远程主机下载新的邮件或者下载后删掉这些邮件.不支持多信箱,也不能提供持久稳定的邮件认证.也就是说不能使用pop3来作为邮件同步协议. poplib支持多个认证方法.最普遍的是基本的用 ...