前面我们已经讲解完了 UINavigationController 的一些常用属性以及方法,现在让我们来看看一个关于网络的 UIWebView.
1.UIWebView的常用属性
- // 1.设置 UIWebView 的代理对象
- var delegate: UIWebViewDelegate?
-
- // 2.获取 UIWebView 的 UIScrollView 属性
- var scrollView: UIScrollView { get }
-
- // 3.获取 UIWebView 的网络请求
- var request: NSURLRequest? { get }
-
- // 4.获取 UIWebView 是否在接收数据的时候可以退后一步
- var canGoBack: Bool { get }
-
- // 5.获取 UIWebView 是否在接收数据的时候可以前进一步
- var canGoForward: Bool { get }
-
- // 6.获取 UIWebView 是否接受完数据
- var loading: Bool { get }
-
- // 7.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
- var scalesPageToFit: Bool
-
- // 8.设置 UIWebView 接收的数据是什么类型
- var dataDetectorTypes: UIDataDetectorTypes
-
- // 9.设置 UIWebView 内是否可以回放媒体
- var allowsInlineMediaPlayback: Bool
-
- // 10.设置 UIWebView 中的 HTML5 视频是否自动播放(默认是True)
- var mediaPlaybackRequiresUserAction: Bool
-
- // 11.设置 UIWebView 是否可以使用 Air 播放(默认是True)
- var mediaPlaybackAllowsAirPlay: Bool
-
- // 12.设置 UIWebView 是否使用同步加载(默认是False)
- var suppressesIncrementalRendering: Bool
-
- // 13.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
- var keyboardDisplayRequiresUserAction: Bool
-
- // 14.设置 UIWebView 的分页模式
- var paginationMode: UIWebPaginationMode
-
- // 15.设置 UIWebView 的分页打破模式
- var paginationBreakingMode: UIWebPaginationBreakingMode
-
- // 16.设置 UIWebView 的分页长度
- var pageLength: CGFloat
-
- // 17.设置 UIWebView 之间的页面宽度
- var gapBetweenPages: CGFloat
-
- // 18.获取 UIWebView 的页面数量
- var pageCount: Int { get }@H_404_93@
-
常用类型
-
// 1.获取 UIWebView 的数据类型
struct UIDataDetectorTypes : RawOptionSetType {
init(_ rawValue: UInt)
init(rawValue: UInt)
static var PhoneNumber: UIDataDetectorTypes { get }
static var Link: UIDataDetectorTypes { get }
static var Address: UIDataDetectorTypes { get }
static var CalendarEvent: UIDataDetectorTypes { get }
static var None: UIDataDetectorTypes { get }
static var All: UIDataDetectorTypes { get }
}
// 2.设置 UIWebView 的 Navigation 类型
enum UIWebViewNavigationType : Int {
case LinkClicked
case FormSubmitted
case BackForward
case Reload
case FormResubmitted
case Other
}
// 3.设置 UIWebView 的分页样式
enum UIWebPaginationMode : Int {
case Unpaginated
case LeftToRight
case TopToBottom
case BottomToTop
case RightToLeft
}
// 4.设置 UIWebView 打破分页样式的样式
enum UIWebPaginationBreakingMode : Int {
case Page
case Column
}@H_404_93@
2.UIWebView的代理方法
// 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
optional func webView(webView: UIWebView,shouldStartLoadWithRequest request: NSURLRequest,navigationType: UIWebViewNavigationType) -> Bool
// 2.该方法是在 UIWebView 在开发加载时调用
optional func webViewDidStartLoad(webView: UIWebView)
// 3.该方法是在 UIWebView 加载完之后才调用
optional func webViewDidFinishLoad(webView: UIWebView)
// 4.该方法是在 UIWebView 请求失败的时候调用
optional func webView(webView: UIWebView,didFailLoadWithError error: NSError)@H_404_93@
3.代码示范
首先我们要使用storyBoard布局界面
关联控件
遵守代理协议
class ViewController: UIViewController,UIWebViewDelegate {
}@H_404_93@
自定义UIWebVIew
func myWebView() {
// 1.获取 UIWebView 的 UIScrollView 属性
let webScroll = webView.scrollView
println("webScroll = \(webScroll)")
// 2.获取 UIWebView 的 request 属性
let webRequest = webView.request
println("webRequest = \(webRequest)")
// 3.获取 UIWebView 是否在接收数据的时候可以退后一步
let webCanBack = webView.canGoBack
println("webCanBack = \(webCanBack)")
// 4.获取 UIWebView 是否在接收数据的时候可以前进一步
let webCanGo = webView.canGoForward
println("webCanGo = \(webCanGo)")
// 5.获取 UIWebVIew 是否接受完数据
let webLoading = webView.loading
println("webLoading = \(webLoading)")
// 6.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
webView.scalesPageToFit = true
// 7.设置 UIWebView 接收到得数据是什么类型的
webView.dataDetectorTypes = UIDataDetectorTypes.All
// 8.设置 UIWebView 内是否可以回放媒体
webView.allowsInlineMediaPlayback = true
// 9.设置 UIWebView 中的 HTML5 视频是否自动播放
webView.mediaPlaybackRequiresUserAction = true
// 10.设置 UIWebView 是否可以使用 Air 播放
webView.mediaPlaybackAllowsAirPlay = true
// 11.设置 UIWebView 是否使用同步加载(默认是False)
webView.suppressesIncrementalRendering = false
// 12.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
webView.keyboardDisplayRequiresUserAction = true
// 13.设置 UIWebView 的分页模式
webView.paginationMode = UIWebPaginationMode.RightToLeft
// 14.设置 UIWebView 的分页打破模式
webView.paginationBreakingMode = UIWebPaginationBreakingMode.Column
// 15.设置 UIWebView 的分页长度
webView.pageLength = 400
// 16.设置 UIWebView 每个分页之间的宽度
webView.gapBetweenPages = 100
// 17.获取 UIWebView 的分页数量
let webViewPageCount = webView.pageCount
println(webViewPageCount)
// 18.设置 UIWebView 的代理对象
webView.delegate = self
// 19.发送网络请求
var url:NSURL = NSURL(string:"http://www.baidu.com")!
var request:NSURLRequest = NSURLRequest(URL:url)
webView.loadRequest(request)
}@H_404_93@
实现代理方法
// 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
func webView(webView: UIWebView,shouldStartLoadWithRequest request: NSURLRequest,navigationType: UIWebViewNavigationType) -> Bool {
return true
}
// 2.该方法是在 UIWebView 在开发加载时调用
func webViewDidStartLoad(webView: UIWebView) {
println("开始加载")
}
// 3.该方法是在 UIWebView 加载完之后才调用
func webViewDidFinishLoad(webView: UIWebView) {
println("加载完成")
}
// 4.该方法是在 UIWebView 请求失败的时候调用
func webView(webView: UIWebView,didFailLoadWithError error: NSError) {
println("加载失败")
}@H_404_93@
在 ViewDidLoad 方法中实现
override func viewDidLoad() {
super.viewDidLoad()
self.myWebView()
}@H_404_93@
PS: UIWebView 继承与 UIView,并且遵守了 UIScrollViewDelegate 协议,所以它可以使用里面的方法和属性.
好了,这次我们就讲到这里,下次我们继续~~