應(yīng)用程序編程接口(API)參考文檔
UIWebView Offical API reference
WKWebView Offical API reference
UIWebView
你可以使用 UIWebView 類(lèi)來(lái)在你的APP中嵌入Web內(nèi)容纸厉。要做到這一點(diǎn)系吭,創(chuàng)建一個(gè)UIWebView對(duì)象,將其連接到窗口残腌,并向它發(fā)送加載網(wǎng)頁(yè)內(nèi)容的請(qǐng)求村斟。你也可以使用這個(gè)類(lèi)在網(wǎng)頁(yè)訪(fǎng)問(wèn)歷史中前進(jìn)或后退,你甚至可以通過(guò)編程設(shè)置一些網(wǎng)頁(yè)內(nèi)容屬性抛猫。
預(yù)覽
注
以 iOS 8 或者以后的版本運(yùn)行的應(yīng)用程序蟆盹,使用WKWebView
類(lèi)而不是使用UIWebView
類(lèi).此外,考慮到如果你渲染的文件不支持運(yùn)行JavaScript闺金,那么應(yīng)該將WKPreferences
屬性中的javaScriptEnabled
設(shè)置為False逾滥。
重要
被連接的 iOS 應(yīng)用程序或者 iOS 10.0 之后必須在其Info.plist文件中包含它需要訪(fǎng)問(wèn)的數(shù)據(jù)類(lèi)型的使用說(shuō)明鍵,否則將導(dǎo)致崩潰败匹。特別地寨昙,如需訪(fǎng)問(wèn)用戶(hù)的照片數(shù)據(jù),它必須還包括NSPhotoLibraryUsageDescription
和NSCameraUsageDescription
掀亩。
附:允許http協(xié)議請(qǐng)求數(shù)據(jù)解決方案
關(guān)于iOS9中的App Transport Security相關(guān)說(shuō)明及適配
使用loadHTMLString(_:BASEURL:)
方法開(kāi)始加載本地HTML文件或loadRequest(_:)
方法開(kāi)始加載網(wǎng)頁(yè)內(nèi)容舔哪。使用stopLoading()
方法停止加載,此外使用isLoading
屬性查看Web視圖是否在加載過(guò)程中槽棍。
如果要允許用戶(hù)通過(guò)網(wǎng)頁(yè)訪(fǎng)問(wèn)歷史前進(jìn)或后退頁(yè)面捉蚤,那么你可以使用GoBack的()
和goForward()
方法作為按鈕的動(dòng)作。使用canGoBack
和canGoForward
屬性以禁用按鈕,使用戶(hù)無(wú)法在一個(gè)方向上移動(dòng)炼七。
默認(rèn)情況下缆巧,Web視圖會(huì)自動(dòng)將出現(xiàn)在網(wǎng)頁(yè)內(nèi)容中的電話(huà)號(hào)碼轉(zhuǎn)換為電話(huà)鏈接。當(dāng)電話(huà)鏈接被點(diǎn)擊時(shí)豌拙,電話(huà)應(yīng)用程序會(huì)啟動(dòng)并撥打該號(hào)碼陕悬。要關(guān)閉此默認(rèn)行為,需要設(shè)置UIDataDetectorTypes
屬性的phoneNumberdataDetectorTypes
位域中不包含phoneNumber
標(biāo)志按傅。
您也可以以編程方式使用scalesPageToFit
屬性來(lái)設(shè)置Web視圖首次顯示在網(wǎng)頁(yè)上的比例捉超。此后胧卤,用戶(hù)可以通過(guò)手勢(shì)改變比例。
如果你想跟蹤網(wǎng)頁(yè)內(nèi)容的加載狂秦,需要設(shè)置對(duì)象的delegate
屬性使其遵守UIWebViewDelegate
協(xié)議灌侣,
重要
你不應(yīng)該在UIScrollView
的對(duì)象中嵌入UIWebView
或UITableView
的對(duì)象。如果這樣做裂问,可能會(huì)導(dǎo)致意外的行為,因?yàn)檫@兩個(gè)對(duì)象的觸摸事件可能被混合并錯(cuò)誤處理牛柒。
你可以在UIWebView
中使用 Web 檢查器輕松地調(diào)試HTML堪簿,CSS,和JavaScript內(nèi)容皮壁。閱讀 Debugging Web Content on iOS 以了解如何配置適用于iOS的Web檢查椭更。閱讀 Safari Web Content Guide 的剩余部分以了解如何創(chuàng)建一個(gè)在iPhone和iPad上用于優(yōu)化Safari瀏覽器的網(wǎng)頁(yè)內(nèi)容。
有關(guān)基本視圖行為的信息蛾魄,請(qǐng)參閱 View Programming Guide for iOS虑瀑。
支持的文件格式
除了HTML內(nèi)容,UIWebView
的對(duì)象可以被用于顯示其他內(nèi)容類(lèi)型滴须,如Keynote舌狗,PDF和網(wǎng)頁(yè)文檔。但是扔水,為了最好的渲染簡(jiǎn)單而豐富的文本痛侍,你應(yīng)該使用的UITextView
來(lái)代替。
保存狀態(tài)
在iOS 6 及之后的版本中魔市,如果你對(duì)視圖的restorationidentifier
屬性賦值主届,它會(huì)試圖保持該視圖的URL歷史,每個(gè)頁(yè)面的縮放和滾動(dòng)位置待德,以及當(dāng)前正在查看的頁(yè)面的信息君丁。在恢復(fù)過(guò)程中,視圖會(huì)恢復(fù)這些值使網(wǎng)頁(yè)內(nèi)容看起來(lái)就像以前那樣将宪。有關(guān)狀態(tài)保存和恢復(fù)如何工作的詳細(xì)信息绘闷,請(qǐng)參閱 App Programming Guide for iOS。
有關(guān)外觀(guān)和行為的配置的詳細(xì)信息涧偷,請(qǐng)參閱Web Views簸喂。
子類(lèi)注意事項(xiàng)
UIWebView
類(lèi)不能被繼承。
關(guān)鍵字
設(shè)置代理
- var delegate:
Object-C:@property(nonatomic, assign) id< UIWebViewDelegate > delegate
接收者的代理
加載內(nèi)容
func load(Data, mimeType: String, textEncodingName: String, baseURL: URL)
設(shè)置主頁(yè)面內(nèi)容燎潮,MIME類(lèi)型喻鳄,編碼方式和URL基地址。func loadHTMLString(String, baseURL: URL?)
設(shè)置主頁(yè)內(nèi)容和URL基地址确封。func loadRequest(URLRequest)
通過(guò)啟動(dòng)一個(gè)異步客戶(hù)端請(qǐng)求連接到一個(gè)給定的網(wǎng)址.var request: URLRequest?
URL請(qǐng)求確認(rèn)需要加載內(nèi)容的位置var isLoading: Bool
布爾值除呵,該值指示接收器是否完成加載內(nèi)容再菊。func stopLoading()
停止加載由接收器管理的任何Web內(nèi)容。func reload()
重新加載當(dāng)前頁(yè)面颜曾。
前進(jìn)和后退
var canGoBack: Bool
布爾值纠拔,該值指示接收器是否可以向后回退var canGoForward: Bool
布爾值,該值指示接收器是否可以向前移動(dòng)func goBack()
加載前向列表中的前一個(gè)位置func goForward()
加載前向列表中的后一個(gè)位置
設(shè)置網(wǎng)頁(yè)內(nèi)容屬性
var allowsLinkPreview: Bool
布爾值泛豪,該值確定是否按一個(gè)鏈接可以顯示目標(biāo)鏈接的預(yù)覽var scalesPageToFit: Bool
布爾值稠诲,確定是否網(wǎng)頁(yè)的大小適應(yīng)視圖,并且用戶(hù)可以改變頁(yè)面大小var scrollView: UIScrollView
與web視圖關(guān)聯(lián)的滾動(dòng)視圖var suppressesIncrementalRendering: Bool
布爾值诡曙,該值指示W(wǎng)eb視圖是否抑制內(nèi)容渲染臀叙,直到它完全加載到內(nèi)存中為止var keyboardDisplayRequiresUserAction: Bool
布爾值,指示是否可以用編程的方式在Web內(nèi)容中顯示鍵盤(pán)var dataDetectorTypes: UIDataDetectorTypes
在Web視圖中价卤,將數(shù)據(jù)類(lèi)型轉(zhuǎn)換為可點(diǎn)擊的URL劝萤。
運(yùn)行Javascript
- func stringByEvaluatingJavaScript(from: String)
返回運(yùn)行JavaScript腳本的結(jié)果。雖然這種方法并未被廢除慎璧,最好的做法是使用wkwebview
類(lèi)的evaluatejavascript(_:completionhandler:)
方法代替床嫌。
管理媒體播放
var allowsInlineMediaPlayback: Bool
布爾值,確定是否使用在線(xiàn)HTML5視頻播放或使用本地全屏幕控制器var mediaPlaybackRequiresUserAction: Bool
布爾值胸私,確定HTML5視頻是否可以自動(dòng)播放或需要用戶(hù)開(kāi)始播放它們var mediaPlaybackAllowsAirPlay: Bool
布爾值厌处,確定是否允許在這個(gè)視圖中使用Air Playvar allowsPictureInPictureMediaPlayback: Bool
布爾值,確定是否在該視圖中允許播放圖片
管理頁(yè)面
var gapBetweenPages: CGFloat
頁(yè)面之間點(diǎn)的間隙大小var pageCount: Int
通過(guò)Web視圖的布局產(chǎn)生的頁(yè)數(shù)var pageLength: CGFloat
頁(yè)面流的方向上盖文,每一頁(yè)的大小var paginationBreakingMode: UIWebPaginationBreakingMode
列或分頁(yè)發(fā)生的方式var paginationMode: UIWebPaginationMode
web視圖中的內(nèi)容布局
常數(shù)
UIWebViewNavigationType
常數(shù)指示用戶(hù)的動(dòng)作嘱蛋。UIWebPaginationBreakingMode
列或分頁(yè)發(fā)生的方式UIWebPaginationMode
web視圖中的內(nèi)容布局,它決定了頁(yè)面流的方向五续。
關(guān)系
繼承自: UIView
遵守的協(xié)議:
- CVarArg
- Equatable
- Hashable
- NSCoding
- UIAccessibilityIdentification
- UIScrollViewDelegate