import
UIKit
class
ViewController
:
UIViewController
,
UIWebViewDelegate
UITextFieldDelegate
{
@IBOutlet
var
btngo:
UIButton
!
webview:
UIWebView
!
txturl:
UITextField
!
loadIndicator:
UIActivityIndicatorView
!
ptimer:
NSTimer
!
//进度条控件
progBar:
UIProgressView
!
override
func
viewDidLoad() {
super
.viewDidLoad()
// Do any additional setup after loading the view,typically from a nib.
self
.webview.delegate =
;
loadIndicator =
(frame:
CGRectMake
(100.0,100.0,32.0,32.0));
loadIndicator.activityIndicatorViewStyle =
UIActivityIndicatorViewStyle
.
Gray
.view.addSubview(loadIndicator);
txturl.delegate =
self
//构建浏览器工具条
setupBrowserToolbar()
}
setupBrowserToolbar()
{
// 创建一个浏览器工具条,并设置它的大小和位置
let
browserToolbar =
UIToolbar
(0,320,44))
// 将工具条添加到当前应用的界面中
.view.addSubview(browserToolbar)
//创建图片工具条,但是不是直接使用文件名,而是用 NSData 方式初始化 UIImage
path =
NSBundle
.mainBundle().pathForResource(
"back"
"png"
)
urlStr =
NSURL
.fileURLWithPath(path!);
data =
NSData
(contentsOfURL:urlStr);
btnback =
UIBarButtonItem
(image:
UIImage
(data: data!),
style:.
Plain
Selector
(
"backClicked:"
));
//第一个分隔按钮
btngap1 =
(barButtonSystemItem:.
FlexibleSpace
target:
nil
action:
);
// 创建前进按钮 UIBarButtonItem
btnforward =
(named:
"forward.png"
),
"forwardClicked:"
));
// 第二个分隔按钮,创建一个可伸缩的UIBarButtonItem
btngap2 =
);
// 创建重新加载按钮 UIBarButtonItem
btnreload =
"reload.png"
"reloadClicked:"
));
//第三个分隔按钮
btngap3 =
);
//创建加载停止按钮
btnstop =
"stop"
"stopClicked:"
));
//第四个分隔按钮
btngap4 =
);
//创建进度工具条
progBar =
(progressViewStyle:
UIProgressViewStyle
Bar
)
// 设置UIProgressView的大小
progBar.frame =
// 设置该进度条的初始进度为0
progBar.progress = 0
// 创建使用 UIView 的自定义的 UIBarButtonItem
btnprog =
(customView:progBar)
// 为工具条设置工具按钮
browserToolbar.setItems( [btnback,btngap1,btnforward,btngap2,
btnreload,btngap3,btnstop,btngap4,btnprog ],animated:
true
)
//创建计时器对象
ptimer =
.scheduledTimerWithTimeInterval(0.2,
"loadProgress"
userInfo:
);
ptimer.invalidate()
}
textFieldShouldReturn(textField:
) ->
Bool
{
txturl.resignFirstResponder()
print
"url Changed!"
)
url = txturl.text;
loadUrl(url!)
return
true
}
/*
在 UIWebView 加载指定 URL
*/
loadUrl(url:
String
)
{
urlobj =
(string:url)
request =
NSURLRequest
(
URL
:urlobj!)
webview.loadRequest(request);
}
stopClicked(sender:
)
{
webview.stopLoading()
}
reloadClicked(sender:
)
{
webview.reload()
}
backClicked(sender:
)
{
webview.goBack()
}
forwardClicked(sender:
)
{
webview.goForward()
}
@IBAction
goClicked(sender:
)
{
//收起输入面板
txturl.resignFirstResponder()
url = txturl.text;
loadUrl(url!)
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
webViewDidStartLoad(webView:
)
{
progBar.setProgress(0,153)!important">false
);
ptimer.fire();
loadIndicator.startAnimating();
}
webViewDidFinishLoad(webView:
)
{
loadIndicator.stopAnimating();
progBar.setProgress(1,monospace!important; min-height:inherit!important">);
ptimer.invalidate();
}
loadProgress()
{
// 如果进度满了,停止计时器
if
(progBar.progress >= 1.0)
{
// 停用计时器
ptimer.invalidate();
}
else
{
// 改变进度条的进度值
progBar.setProgress(progBar.progress + 0.02,monospace!important; min-height:inherit!important">);
}
}
webView(webView:
NSError
?)
{
alertController =
UIAlertController
(title:
"出错!"
message: error!.localizedDescription,
preferredStyle:
UIAlertControllerStyle
Alert
)
okAction =
UIAlertAction
"确定"
UIAlertActionStyle
Cancel
handler:
)
alertController.addAction(okAction)
.presentViewController(alertController,completion:
)
}
}