1. 程式人生 > >UIKit框架-高階控制元件Swift版本: 10.UIWebView方法/屬性詳解

UIKit框架-高階控制元件Swift版本: 10.UIWebView方法/屬性詳解

前面我們已經講解完了 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佈局介面
1

關聯控制元件
2

遵守代理協議

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 協議, 所以它可以使用裡面的方法和屬性.

好了, 這次我們就講到這裡, 下次我們繼續~~