WKWebView- 基本屬性介紹2

確定WebKit是否可以加載內(nèi)容

+ (BOOL)handlesURLScheme:(NSString*)urlScheme

返回WebKIT是否支持用特定URL方案加載資源

WKWebView允許設(shè)置請(qǐng)求攔截,但是只允許攔截自定義Scheme的請(qǐng)求,不允許http,https,ftp,file的請(qǐng)求,所以可以通過[WKWebView handlesURLScheme:]來判斷scheme是否已經(jīng)被WKWebView默認(rèn)處理了

初始化 webview

1.1 @property(nonatomic, readonly, copy) WKWebViewConfiguration *configuration

用于初始化web視圖的配置的副本

用WKWebViewConfiguration您可以確定網(wǎng)頁(yè)呈現(xiàn)的時(shí)間,如何處理媒體回放等其他

只有在初始化WKWebView的時(shí)候設(shè)置configuration,并不能在WKWebView創(chuàng)建后去修改configuration

WKWebViewConfiguration 介紹

1.2 initWithFrame:configuration:

返回指定frame和配置初始化的Web視圖

這是一個(gè)接受自定義WKWebVIEW配置的指定初始化器。初始化器復(fù)制指定的配置。初始化Web視圖之后更改配置對(duì)象configuration對(duì)Web視圖沒有影響。可以使用initWithFrame:方法初始化具有默認(rèn)配置的實(shí)例。查看默認(rèn)值的WKWebVIEW配置

Inspecting the View Information 查看視圖信息

2.1 scrollView

@property(nonatomic, readonly, strong) UIScrollView *scrollView;

只讀的,與Web視圖關(guān)聯(lián)的滾動(dòng)視圖
webview可以滑動(dòng)的原因就是因?yàn)殛P(guān)聯(lián)的scrollview

2.2 title

頁(yè)面的標(biāo)題,一般用于kvo監(jiān)聽得到title用來更新nav標(biāo)題ui的
代碼如下

[self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];

2.3 URL

當(dāng)前的url,要在用戶界面中反映的URL,也可以用kvo監(jiān)聽

2.4 customUserAgent

自定義用戶代理字符串
如果沒有設(shè)置自定義用戶代理字符串,則將為nil

Setting Delegates 設(shè)置代理

3.1 navigationDelegate

@property(nonatomic, weak) id<WKNavigationDelegate> navigationDelegate;

這個(gè)協(xié)議的方法能夠讓你實(shí)現(xiàn)觸發(fā)的自定義行為在Web視圖接受、加載和完成導(dǎo)航請(qǐng)求的過程中
WKNavigationDelegate

3.2 UIDelegate

UIDelegate

Loading Content 加載內(nèi)容

4.1 estimatedProgress

當(dāng)前導(dǎo)航加載的進(jìn)度
一般用于kvo監(jiān)聽,監(jiān)聽加載進(jìn)度,做一些加載的ui處理,它的值是 0.0 - 1.0,當(dāng)完全加載完(加載的內(nèi)容包括包括主要文件及其所有潛在的子資源)的時(shí)候它的值就為1.0

4.2 hasOnlySecureContent

一個(gè)布爾值,指示頁(yè)上的所有資源是否已通過安全加密連接加載
也是一般用于kvo監(jiān)聽

4.2 loadHTMLString:baseURL:

設(shè)置網(wǎng)頁(yè)內(nèi)容和基本URL
參數(shù)1:網(wǎng)頁(yè)內(nèi)容的字符串
參數(shù)2:用于解析文檔中的相對(duì)URL

一般我們都是這個(gè)方法加載本地的html 內(nèi)容

WKWebView 在iOS 9 有新的加載本地方法- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL API_AVAILABLE(macosx(10.11), ios(9.0));.但是我看了網(wǎng)上有一些博客說- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request;并不能加載本地html文件.其實(shí)兩者都能加載.只是需要把路徑寫對(duì).第一個(gè)方法就不過多敘述了.網(wǎng)上有很多的博客.這里我就用第二個(gè)方法來看一下如何加載

NSString *path = [[[NSBundle mainBundle] bundlePath]  stringByAppendingPathComponent:@"index.html"];
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];
        [_mainWebView loadRequest: request];

4.2 loading

指示視圖當(dāng)前是否加載內(nèi)容的布爾值
可以用于kvo監(jiān)聽,如果還在加載內(nèi)容則為true,加載完成則為flase

4.3 reload

重新加載當(dāng)前頁(yè)面,
返回重新加載的網(wǎng)頁(yè)的新導(dǎo)航
經(jīng)過測(cè)試:如果webview加載成功完成之后,調(diào)用此方法,相當(dāng)于重新加載,但是如果是加載失敗之后調(diào)用此方法,此方法就不生效了

4.4 reloadFromOrigin

重新加載當(dāng)前頁(yè)面,如果可能,使用緩存驗(yàn)證條件執(zhí)行端到端重新驗(yàn)證
reload不同的是它會(huì)比較網(wǎng)絡(luò)數(shù)據(jù)是否有變化,沒有變化則使用緩存,否則從新請(qǐng)求

經(jīng)過測(cè)試:如果webview加載成功完成之后,調(diào)用此方法,相當(dāng)于重新加載,但是如果是加載失敗之后調(diào)用此方法,此方法就不生效了

4.4 stopLoading

停止加載當(dāng)前頁(yè)上的所有資源
如果在加載的過程中,調(diào)用此方法,會(huì)進(jìn)入
- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error失敗回調(diào)

4.5 loadData:MIMEType:characterEncodingName:baseURL:

這個(gè)方法跟loadHTMLString:baseURL:類似,只不過一個(gè)是html的字符內(nèi)容,一個(gè)是html的data的內(nèi)容

說下第二個(gè)參數(shù): MIMEType 文件類型,一般都用@"text/html"

4.6 loadFileURL:allowingReadAccessToURL:

加載 本地文件系統(tǒng)的url

原因是WKWebView是不允許通過的loadRequest的方法來加載本地根目錄的資源文件。
而在iOS9的SDK中加入了以下方法來加載本地的HTML文件:

如果第二個(gè)參數(shù)引用單個(gè)文件,則只有該文件可以由WebKIT加載。如果第二個(gè)參數(shù)引用一個(gè)目錄,那么該文件中的文件可以由WebKit加載

Scaling Content 縮放web內(nèi)容

5.1 allowsMagnification

一個(gè)布爾值,指示放大手勢(shì)是否會(huì)改變Web視圖的放大率
默認(rèn)值為NO
這個(gè)屬性是針對(duì)MAC OS的不是iPhone

5.1 magnification

頁(yè)內(nèi)容當(dāng)前縮放的的比例
默認(rèn)的是1.0
這個(gè)屬性是針對(duì)MAC OS的不是iPhone

5.2 setMagnification:centeredAtPoint:

按指定因子縮放頁(yè)面內(nèi)容,并將結(jié)果集中在指定點(diǎn)上

這個(gè)屬性是針對(duì)MAC OS的不是iPhone

Navigating 導(dǎo)航相關(guān)

6.1 allowsBackForwardNavigationGestures

一個(gè)布爾值,指示水平滑動(dòng)手勢(shì)是否會(huì)觸發(fā)前向列表導(dǎo)航
只針對(duì)側(cè)滑有效
默認(rèn)為NO

6.2 backForwardList

Web視圖的前向列表
是個(gè)WKBackForwardList的數(shù)組

6.3 canGoBack

一個(gè)布爾值,指示在前退列表中是否存在可以導(dǎo)航到的,如果前退列表中里有可以返回的,則為yes

6.4 canGoForward

一個(gè)布爾值,指示后向列表中是否存在可以導(dǎo)航到

6.5 allowsLinkPreview

確定按下鏈接是否顯示鏈接的目的地的預(yù)覽

從iOS 9開始,在支持3D Touch的設(shè)備中使用WKWebView的allowLinkPreview屬性,WKWebView客戶端就可以選擇基于Peek的鏈接預(yù)覽。當(dāng)allowLinkPreview屬性設(shè)為true時(shí),使用者可以輕輕的按下鏈接來查看,然后在app上的另一個(gè)視圖里加載鏈接,同時(shí)app在背景中模糊顯示。

如果使用者用力按下鏈接,鏈接會(huì)在Safari中彈出


image.png

在WKWebView和UIWebView可以設(shè)置屬性allowsLinkPreview來支持WebView的Peek和Pop。

  1. 這個(gè)屬性是默認(rèn)設(shè)置為NO

  2. 如果使用WKWebView或者UIWebView,Pop會(huì)跳轉(zhuǎn)到Safari

  3. 如果希望在APP內(nèi)部保證Pop,建議使用SFSafariViewController來替代WKWebView

6.6 goBack

返回

6.7 goForward

前進(jìn)

6.8 goToBackForwardListItem:

返回到指定的item,item屬于backForwardList數(shù)組中

6.9 loadRequest:

加載請(qǐng)求,加載網(wǎng)絡(luò)html

Executing JavaScript 執(zhí)行 JavaScript代碼

7.1 evaluateJavaScript:completionHandler:

執(zhí)行JavaScript代碼
參數(shù)1:要被執(zhí)行的JavaScript代碼的字符串
參數(shù)2:執(zhí)行完成或者失敗的block回調(diào)

這個(gè)completionHandler是執(zhí)行在主線程的

Taking Snapshots 拍攝快照

8.1 takeSnapshotWithConfiguration:completionHandler:

獲取視圖可見視口的快照

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,595評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,814評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,224評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,444評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,988評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,804評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,998評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評(píng)論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,237評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評(píng)論 1 287
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,706評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,993評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,121評(píng)論 1 32
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,785評(píng)論 18 139
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,482評(píng)論 8 265
  • 什么是驗(yàn)證碼 驗(yàn)證碼(CAPTCHA)是“Completely Automated Public Turing t...
    Grennay閱讀 892評(píng)論 0 2
  • 要熬多久我才能夠死掉
    蘑菇精吖閱讀 159評(píng)論 0 0