API翻译:UIWebView

应用程序编程接口(API)参考文档

UIWebView Offical API reference
WKWebView Offical API reference

UIWebView

你可以使用 UIWebView 类来在你的APP中嵌入Web内容。要做到这一点,创建一个UIWebView对象,将其连接到窗口,并向它发送加载网页内容的请求。你也可以使用这个类在网页访问历史中前进或后退,你甚至可以通过编程设置一些网页内容属性。

预览


以 iOS 8 或者以后的版本运行的应用程序,使用WKWebView类而不是使用UIWebView类.此外,考虑到如果你渲染的文件不支持运行JavaScript,那么应该将WKPreferences属性中的javaScriptEnabled设置为False。


重要
被连接的 iOS 应用程序或者 iOS 10.0 之后必须在其Info.plist文件中包含它需要访问的数据类型的使用说明键,否则将导致崩溃。特别地,如需访问用户的照片数据,它必须还包括NSPhotoLibraryUsageDescriptionNSCameraUsageDescription

附:允许http协议请求数据解决方案
关于iOS9中的App Transport Security相关说明及适配

使用loadHTMLString(_:BASEURL:)方法开始加载本地HTML文件或loadRequest(_:)方法开始加载网页内容。使用stopLoading()方法停止加载,此外使用isLoading属性查看Web视图是否在加载过程中。

如果要允许用户通过网页访问历史前进或后退页面,那么你可以使用GoBack的()goForward()方法作为按钮的动作。使用canGoBackcanGoForward属性以禁用按钮,使用户无法在一个方向上移动。

默认情况下,Web视图会自动将出现在网页内容中的电话号码转换为电话链接。当电话链接被点击时,电话应用程序会启动并拨打该号码。要关闭此默认行为,需要设置UIDataDetectorTypes属性的phoneNumberdataDetectorTypes位域中不包含phoneNumber标志。

您也可以以编程方式使用scalesPageToFit属性来设置Web视图首次显示在网页上的比例。此后,用户可以通过手势改变比例。

如果你想跟踪网页内容的加载,需要设置对象的delegate属性使其遵守UIWebViewDelegate协议,

重要
你不应该在UIScrollView的对象中嵌入UIWebViewUITableView的对象。如果这样做,可能会导致意外的行为,因为这两个对象的触摸事件可能被混合并错误处理。

你可以在UIWebView中使用 Web 检查器轻松地调试HTML,CSS,和JavaScript内容。阅读 Debugging Web Content on iOS 以了解如何配置适用于iOS的Web检查。阅读 Safari Web Content Guide 的剩余部分以了解如何创建一个在iPhone和iPad上用于优化Safari浏览器的网页内容。

有关基本视图行为的信息,请参阅 View Programming Guide for iOS。

支持的文件格式

除了HTML内容,UIWebView的对象可以被用于显示其他内容类型,如Keynote,PDF和网页文档。但是,为了最好的渲染简单而丰富的文本,你应该使用的UITextView来代替。

保存状态

在iOS 6 及之后的版本中,如果你对视图的restorationidentifier属性赋值,它会试图保持该视图的URL历史,每个页面的缩放和滚动位置,以及当前正在查看的页面的信息。在恢复过程中,视图会恢复这些值使网页内容看起来就像以前那样。有关状态保存和恢复如何工作的详细信息,请参阅 App Programming Guide for iOS。

有关外观和行为的配置的详细信息,请参阅Web Views。

子类注意事项

UIWebView类不能被继承。

关键字

设置代理

  • var delegate:
    Object-C:@property(nonatomic, assign) id< UIWebViewDelegate > delegate
    接收者的代理

加载内容

  • func load(Data, mimeType: String, textEncodingName: String, baseURL: URL)
    设置主页面内容,MIME类型,编码方式和URL基地址。

  • func loadHTMLString(String, baseURL: URL?)
    设置主页内容和URL基地址。

  • func loadRequest(URLRequest)
    通过启动一个异步客户端请求连接到一个给定的网址.

  • var request: URLRequest?
    URL请求确认需要加载内容的位置

  • var isLoading: Bool
    布尔值,该值指示接收器是否完成加载内容。

  • func stopLoading()
    停止加载由接收器管理的任何Web内容。

  • func reload()
    重新加载当前页面。

前进和后退

  • var canGoBack: Bool
    布尔值,该值指示接收器是否可以向后回退

  • var canGoForward: Bool
    布尔值,该值指示接收器是否可以向前移动

  • func goBack()
    加载前向列表中的前一个位置

  • func goForward()
    加载前向列表中的后一个位置

设置网页内容属性

  • var allowsLinkPreview: Bool
    布尔值,该值确定是否按一个链接可以显示目标链接的预览

  • var scalesPageToFit: Bool
    布尔值,确定是否网页的大小适应视图,并且用户可以改变页面大小

  • var scrollView: UIScrollView
    与web视图关联的滚动视图

  • var suppressesIncrementalRendering: Bool
    布尔值,该值指示Web视图是否抑制内容渲染,直到它完全加载到内存中为止

  • var keyboardDisplayRequiresUserAction: Bool
    布尔值,指示是否可以用编程的方式在Web内容中显示键盘

  • var dataDetectorTypes: UIDataDetectorTypes
    在Web视图中,将数据类型转换为可点击的URL。

运行Javascript

  • func stringByEvaluatingJavaScript(from: String)
    返回运行JavaScript脚本的结果。虽然这种方法并未被废除,最好的做法是使用wkwebview类的evaluatejavascript(_:completionhandler:)方法代替。

管理媒体播放

  • var allowsInlineMediaPlayback: Bool
    布尔值,确定是否使用在线HTML5视频播放或使用本地全屏幕控制器

  • var mediaPlaybackRequiresUserAction: Bool
    布尔值,确定HTML5视频是否可以自动播放或需要用户开始播放它们

  • var mediaPlaybackAllowsAirPlay: Bool
    布尔值,确定是否允许在这个视图中使用Air Play

  • var allowsPictureInPictureMediaPlayback: Bool
    布尔值,确定是否在该视图中允许播放图片

管理页面

  • var gapBetweenPages: CGFloat
    页面之间点的间隙大小

  • var pageCount: Int
    通过Web视图的布局产生的页数

  • var pageLength: CGFloat
    页面流的方向上,每一页的大小

  • var paginationBreakingMode: UIWebPaginationBreakingMode
    列或分页发生的方式

  • var paginationMode: UIWebPaginationMode
    web视图中的内容布局

常数

  • UIWebViewNavigationType
    常数指示用户的动作。

  • UIWebPaginationBreakingMode
    列或分页发生的方式

  • UIWebPaginationMode
    web视图中的内容布局,它决定了页面流的方向。

关系

继承自: UIView

遵守的协议:

  • CVarArg
  • Equatable
  • Hashable
  • NSCoding
  • UIAccessibilityIdentification
  • UIScrollViewDelegate
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容