应用程序编程接口(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文件中包含它需要访问的数据类型的使用说明键,否则将导致崩溃。特别地,如需访问用户的照片数据,它必须还包括NSPhotoLibraryUsageDescription和NSCameraUsageDescription。
附:允许http协议请求数据解决方案
关于iOS9中的App Transport Security相关说明及适配
使用loadHTMLString(_:BASEURL:)方法开始加载本地HTML文件或loadRequest(_:)方法开始加载网页内容。使用stopLoading()方法停止加载,此外使用isLoading属性查看Web视图是否在加载过程中。
如果要允许用户通过网页访问历史前进或后退页面,那么你可以使用GoBack的()和goForward()方法作为按钮的动作。使用canGoBack和canGoForward属性以禁用按钮,使用户无法在一个方向上移动。
默认情况下,Web视图会自动将出现在网页内容中的电话号码转换为电话链接。当电话链接被点击时,电话应用程序会启动并拨打该号码。要关闭此默认行为,需要设置UIDataDetectorTypes属性的phoneNumberdataDetectorTypes位域中不包含phoneNumber标志。
您也可以以编程方式使用scalesPageToFit属性来设置Web视图首次显示在网页上的比例。此后,用户可以通过手势改变比例。
如果你想跟踪网页内容的加载,需要设置对象的delegate属性使其遵守UIWebViewDelegate协议,
重要
你不应该在UIScrollView的对象中嵌入UIWebView或UITableView的对象。如果这样做,可能会导致意外的行为,因为这两个对象的触摸事件可能被混合并错误处理。
你可以在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 Playvar 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