ios swift WKWebView (一)基本了解

苹果官方文档对WKWebView的解读,在iOS 8和OS X 10.10开始,使用WKWebView向应用程序添加Web内容。不要使用UIWebView或WebView。但是如果应用程序需要兼容更低版本,则建议还是使用UIWebView或WebView。

一个WKWebView对象显示交互式Web内容,例如一个应用程序的浏览器。你可以使用WKWebView类嵌入Web内容的应用程序。这样做,创造一个WKWebView对象,设置它为视角,并发送一个请求来加载网页内容。

代码实例,苹果官方文档:(苹果官方文档使用最新的swift版本swift3)

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
    
    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string: "https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }}

一下示例代码使用xcode7.3 swift2.2版本:

//
//  WKViewController.swift
//  WebviewTest
//
//  Created by Zzcz on 2017/3/13.
//  Copyright © 2017年 fly. All rights reserved.
//

import UIKit
import WebKit
class WKViewController: UIViewController,WKUIDelegate ,WKNavigationDelegate{

    var webView : WKWebView!
    var urlString = "https://www.apple.com"
    
    override func loadView() {
        let webConfiguratiojn = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguratiojn)
        webView.UIDelegate = self
        webView.navigationDelegate = self
        view = webView
        
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = NSURL.init(string: urlString)
        let myRequest = NSURLRequest.init(URL: myURL!)
        webView.loadRequest(myRequest)
        
        
        // Do any additional setup after loading the view.
    }

}
对比UIWebView,WKWebView似乎更为强大,WKWebView允许用户通过网页历史前进后退、前进,用goback()和goforward()方法动作按钮。使用cangoback和cangoforward属性禁用的按钮时,用户不能在一个方向移动。

默认情况下,Web视图自动将Web内容中出现的电话号码转换为电话链接。当电话联系被窃听,手机APP的推出和拨号。关闭此默认行为,用WKDataDetectorTypes bitfield,不包含电话号码的旗帜datadetectortypes属性设置。
也可以使用setmagnification(_:centeredat:)以编程方式设置网页内容的第一次是一个Web视图显示比例。此后,用户可以改变规模使用手势。

WKWebView的常用属性或是WKWebView的视图信息

var scrollView: UIScrollView
The scroll view associated with the web view.//与Web视图关联的滚动视图。
var title: String?
The page title.//页面标题。
var url: URL?
The active URL.//活动网址。也可理解为网址链接
var customUserAgent: String?
The custom user agent string.//自定义用户代理字符串。
var serverTrust: SecTrust?
A SecTrustRef object for the currently committed navigation.//目前致力于导航的sectrustref对象。
var certificateChain: [Any]
An array of objects forming the certificate chain for the currently committed navigation.//为当前提交的导航形成证书链的对象数组。
WKWebView的代理:

        webView.UIDelegate = self//WKUIDelegate
        webView.navigationDelegate = self//WKNavigationDelegate
加载内容:

var estimatedProgress: Double//已加载当前导航的几分之一的估计值。

var hasOnlySecureContent: Bool// 一个布尔值,指示页面上的所有资源是否已通过安全加密连接加载。 


func loadHTMLString(String, baseURL: URL?)// 设置网页内容和基本网址。 


var isLoading: Bool// 一个布尔值,该值指示视图(WKWebView)是否正在加载内容。 


func reload()// 重新载入当前页面。 可以理解为刷新数据


func reloadFromOrigin()// 重新载入当前页面,进行端到端的验证使用缓存验证条件,如果可能的话。 


func stopLoading()// 停止加载当前页上的所有资源。 


func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL)// 设置网页内容和基本网址。 


func loadFileURL(URL, allowingReadAccessTo: URL)// 导航到所请求的文件系统上的文件的URL 

缩放内容:(WKWebView的属性)

var allowsMagnification: Bool// 一个布尔值,指示是否放大手势会改变web视图的放大倍数。 


var magnification: CGFloat// 当前缩放页面内容的因素。 


func setMagnification(CGFloat, centeredAt: CGPoint)// 按指定的因子缩放页面内容,并将结果集中在指定的点上。理解为在某一点缩放内容 

导航:

var allowsBackForwardNavigationGestures: Bool// 一个布尔值,指示是否将触发水平滑动手势前进后退列表导航。 

var backForwardList: WKBackForwardList// Web视图的前向列表。 

var canGoBack: Bool// 一个布尔值,指示是否可以导航到前进后退列表有一回项目。 

var canGoForward: Bool// 一个布尔值,指示是否可以导航到后面转发列表有一个项目。 

var allowsLinkPreview: Bool// 一个布尔值,该值决定是否按下链接显示链接的目的地预览。 

func goBack()// 导航到后面的项目在后面转发列表。 

func goForward()// 导航到了项目中的反馈表。 

func go(to: WKBackForwardListItem)// 导航到一个项目从后向前列表并设置为当前项目。 

func load(URLRequest)// 导航到一个URL。加载网络地址

 执行JavaScript
func evaluateJavaScript(String, completionHandler: ((Any?, Error?) -> Void)? = nil)// 评估或是获得一个JavaScript字符串。 
实例方法:

func goBack(Any?)//导航到后面的项目在后面转发列表。

func goForward(Any?)//导航到了项目中的反馈表。

func reload(Any?)//重新载入当前页面。

func reloadFromOrigin(Any?)//重新载入当前页面,进行端到端的验证使用缓存验证条件,如果可能的话。

func stopLoading(Any?)//停止加载当前页上的所有资源。



WKWebView Swift3.0 一款IOS8以后的web加载神器 https://github.com/XFIOSXiaoFeng/SwiftWkWebView 别说了!!!!快上车 WKWebView 支持POST请求 加载本地页面 直接加载网页 JS交互 集成支付宝/微信URL支付功能 仿微信返回按钮 感谢大家的支持 OC版本将不再持续更新 业余爱好 QQ群:384089763 OC版本遗址:https://github.com/XFIOSXiaoFeng/WKWebView NO1 首先得允许访问HTTP链接 HTTPS权限: NSAppTransportSecurity NSAllowsArbitraryLoads API介绍 API属性 //设置navigationBarColor的颜色 var navigationBarColor: UIColor? //是否隐藏进度条 var isProgressHidden = false //注册MessageHandler 需要实现代理方法 var addJavaScriptAry = [String]() //执行JS 需要实现代理方法 var javaScript = String() //设置代理 weak var delegate : WKWebViewDelegate? //右边按钮的值 ItemTag:区分当前按钮 //实现代理方法才能调用点击事件 var rightBarButtonItemTitle : String? var rightBarButtonItemImage : String? var rightBarButtonItemImageH : String? var rightBarButtonItemTag : String? API方法 /// 普通URL加载方式 func load_UrlSting(string:String!) {} /// 加载本地HTML func load_HTMLSting(string:String!) {} /// POST方式请求加载 func load_POSTUrlSting(string:String!,postString:String!) {} /// 添加右侧按钮 func add_rightBarButtonItem(title:String?,image:String?,imageH:String?,itemTag:String?) {} /// 执行JavaScript代码 func run_JavaScript(script:String?) {} API代理方法 //点击右边按钮执行方法 @objc optional func didSelectRightItem(webView:WKWebView,itemTag:String) //注册JS执行代码 @objc optional func didAddScriptMessage(webView:WKWebView,message:WKScriptMessage) //页面执行JS方法 @objc optional func didRunJavaScript(webView:WKWebView,result:Any?,error:Error?)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值