UIKit框架-高階控制元件Swift版本: 10.UIWebView方法/屬性詳解
阿新 • • 發佈:2018-12-30
前面我們已經講解完了 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 }
常用型別
// 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
}
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)
3.程式碼示範
首先我們要使用storyBoard佈局介面
關聯控制元件
遵守代理協議
class ViewController: UIViewController, UIWebViewDelegate {
}
自定義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)
}
實現代理方法
// 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("載入失敗")
}
在 ViewDidLoad 方法中實現
override func viewDidLoad() {
super.viewDidLoad()
self.myWebView()
}
PS: UIWebView 繼承與 UIView, 並且遵守了 UIScrollViewDelegate 協議, 所以它可以使用裡面的方法和屬性.
好了, 這次我們就講到這裡, 下次我們繼續~~