首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用swift在WKWebView中呈现数据之前显示自定义加载器

在使用Swift在WKWebView中呈现数据之前显示自定义加载器,可以通过以下步骤实现:

  1. 创建一个自定义加载器视图:可以使用UIActivityIndicatorView或者自定义的加载动画视图来展示加载状态。可以使用Core Animation或者第三方库来创建自定义加载动画。
  2. 在WKWebView加载数据之前,将自定义加载器视图添加到视图层级中,并设置其位置和样式。
  3. 使用WKNavigationDelegate协议中的方法来监听WKWebView的加载状态。在开始加载网页时,显示自定义加载器视图;在网页加载完成或加载失败时,隐藏自定义加载器视图。

以下是一个示例代码:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    var loadingView: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建自定义加载器视图
        loadingView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        loadingView.center = view.center
        loadingView.backgroundColor = UIColor.lightGray
        loadingView.layer.cornerRadius = 10
        
        let activityIndicator = UIActivityIndicatorView(style: .whiteLarge)
        activityIndicator.center = CGPoint(x: loadingView.bounds.width / 2, y: loadingView.bounds.height / 2)
        activityIndicator.startAnimating()
        loadingView.addSubview(activityIndicator)
        
        // 创建WKWebView并设置代理
        webView = WKWebView(frame: view.bounds)
        webView.navigationDelegate = self
        
        // 将WKWebView添加到视图层级中
        view.addSubview(webView)
        
        // 加载网页
        let url = URL(string: "https://www.example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    
    // WKNavigationDelegate方法:开始加载网页
    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        // 显示自定义加载器视图
        view.addSubview(loadingView)
    }
    
    // WKNavigationDelegate方法:网页加载完成
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        // 隐藏自定义加载器视图
        loadingView.removeFromSuperview()
    }
    
    // WKNavigationDelegate方法:网页加载失败
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        // 隐藏自定义加载器视图
        loadingView.removeFromSuperview()
        
        // 处理加载失败的情况
    }
}

这样,在使用Swift编写的iOS应用中,使用WKWebView加载网页之前会显示自定义的加载器视图,增强用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React中使用ajax获取数据移动浏览显示问题

在做的一个小项目,页面加载使用ajax读取本地REST数据,保存在状态,稍后form的选择下拉框显示,代码如下: 150 componentDidMount() { 151...、火狐浏览访问,数据都能加载,在手机端使用谷歌浏览访问,选择下拉框始终为空,这说明手机端浏览ajax获取数据时出了问题。...165 console.log(err.Message); 166 }, 167 })}) // 此处添加}) 168 } 修改后手机谷歌浏览显示正常...,即在页面加载完成后才执行某个函数,如果函数要操作 DOM,页面加载完成后再执行会更安全,所以使用 jQuery 时这样的写法很常见。...可能的原因是手机端刘览与电脑端浏览页面加载处理脚本时间不同,前者是未等页面加载结束即执行jquery脚本,后者则相反,所以后者不需$(function(){}也可正常显示

5.9K20

iOS开发----JavaScriptCore、UIWebView及WKWebView交互的那些事

分别使用 UIWebView 以及 WKWebView 实现效果如下: JavaScriptCore 类库里面有12个类(还有两个是负责导入相关类的头文件以及一个关于WebKit的宏定义);基本的交互过程...通常用法是自定义一个CustomExport : JSExport,里面将JS可以调用的属性或者方法进行暴露,JS就可以直接使用暴露的属性与方法了。...宏,可以将方法名简化,就像 Swift的 typealias以及 ObjC的 typedef。...UIWebViewDelegate UIWebViewDelegate 的webViewDidFinishLoad() 方法对JSContext进行截取,并执行操作: WKWebView 首先有一点...添加JavaScript交互 WKNavigationDelegate告知web当前使用webView的类型: 履行WKScriptMessageHandler协议,完成交互操作即可 最后记得移除哦

1.4K20

WKWebView详解

一个WKWebView对象显示交互式的web内容,比如在应用程序内的浏览。...您可以使用WKWebView类来应用程序嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...从iOS 8.0和OS X 10.10开始,建议使WKWebView应用程序展示web内容,建议不要使用UIWebView或WebView。...的HTML文档添加视频元素时,还必须包括playsinline属性 iOS 10.0之前创建的应用程序必须使用webkit-playsinline属性 iPhone的默认值为false,而iPad的默认值为...append到之前数据后 如果你尝试发送response之前或者任务已经结束之后发送数据,将会触发异常 如果在任务已经停止加载后调用,将会触发异常 将任务标记为成功完成 - (void)didFinish

20.2K193

iOS新闻类App内容页技术探索

据相关数据显示,截至2017年底,中国手机新闻客户端用户规模达到6.36亿人,移动App已经成为新闻和内容传播的最重要途径之一。...而伴随着行业的竞争和发展,App的 内容页 提升App品质、提升使用时长及提升用户黏性等方面,扮演着更为重要的角色,同时也面临着更大的挑战。 内容页呈现上越来越丰富。...同时为了满足跨平台的一致呈现、PC网页的文章转载、不同平台文章的抓取,以及注重阅读而非交互等原因,使用 WebView 加载渲染本地的HTML字符串数据已经成为了新闻类App通用的方案。...更加丰富的状态: ReusableNestingScrollview ,为了满足更复杂的需求,如视频预加载及自动播放、Gif预加载及自动播放等,我们扩展了组件滚动过程的状态,增加自定义workRange...组件的解耦与自管理,以及广播delegate的实现,为组件的按需加载、按优先级加载提供了基础。对于内容页的各个组件来说,在内容页展示之前大部分是不需要初始化、数据拉取以及渲染的。

2.8K00

Hybrid App 应用 开发 9 个必备知识点复习(WebView 调试 等)

加载使用, UIWebView 限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...WKWebView NSURLProtocol问题 WKWebView 独立于 app 进程之外的进程执行网络请求,请求数据不经过主进程,因此, WKWebView 上直接使用 NSURLProtocol...初始化之前设置, WKWebView 初始化之后设置无效。...于是我们找到了“为什么WebView总是很慢”的原因之一: 浏览,我们输入地址时(甚至之前),浏览就可以开始加载页面。...代理就是客户端和服务之间设置一道关卡,客户端先将请求数据发送出去后,代理服务会将数据包进行拦截,代理服务再冒充客户端发送数据到服务;同理,服务将响应数据返回,代理服务也会将数据拦截,再返回给客户端

3.1K00

分享超详细 WKWebView 开发和使用经验

WKWebView 几个不常用的特性 WKWebview 加载过程的性能指标图解 WKWebview 秒开的实践及踩坑之路 今天分享的这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...didStartProvisionalNavigation 当服务发起重定向请求 didReceiveServerRedirectForProvisionalNavigation 当容器加载数据时发生了错误...didFailProvisionalNavigation 当容器开始加载数据 当网页内容开始主 Frame 开始渲染 提交主 Frame 导航期间发生了错误 当接受 HTTPS 请求证书后执行 当容器内容发生崩溃...,默认为 NO,如果设置为 YES,则 H5 加载完成之前一直处于白屏状态。...,发生 302 重定向会走该方法 当容器加载数据时发生了错误 didFailProvisionalNavigation 正常加载地址或者使用 js 的 location.href 加载错误的地址发生失败会走该回调

4.6K30

【Hybrid】288- Hybrid App 应用开发 9 个必备知识点复习

限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...WKWebView NSURLProtocol问题 WKWebView 独立于 app 进程之外的进程执行网络请求,请求数据不经过主进程,因此, WKWebView 上直接使用 NSURLProtocol...初始化之前设置, WKWebView 初始化之后设置无效。...于是我们找到了“为什么WebView总是很慢”的原因之一: 浏览,我们输入地址时(甚至之前),浏览就可以开始加载页面。...代理就是客户端和服务之间设置一道关卡,客户端先将请求数据发送出去后,代理服务会将数据包进行拦截,代理服务再冒充客户端发送数据到服务;同理,服务将响应数据返回,代理服务也会将数据拦截,再返回给客户端

2.3K20

​# iOS WKWebView适配(基础篇)

record.displayName); }]; } }]; allowsInlineMediaPlayback PS: 视频播放不全屏显示..."]; 4.WKUIDelegate wkwebview.UIDelegate属性 用户js调用alert,confirm,prompt,如果不适配则无法使用对应js功能,估计是安全问题,因为使用中有的会采用这个作为...2种请求错误: “页面开始请求”后 “收到请求响应”前的错误 比如:地址非法,DNS解析地址有问题,本地网络问题 总之是还没有请求到服务时候的错误,都会返回在这里 - (void)webView:...,然后请求沙盒方式读取页面 自定义了一个url头部"bundle://",在请求的时候做"file:///"头部替换 4.加载源代码 直接把html文件读出来以后,以页面内容方式去读取 [self.wkWebView...= 5, // 从原始地址确认缓存数据的合法性后,缓存数据就可以使用,否则从原始地址加载

3.7K30

iOS组件化过程遇到的问题及解决方案iOS组件化过程遇到的问题及解决方案

Bundle的图片命名:如果图片命名为640x1136,则真机无法加载,模拟无影响,需改为640*1136 五:保持Podfile的iOS版本和podspec版本统一 Podfile文件 :...,核心语句是 error: include of non-modular header inside framework module,使用 Swift 的库时会出现这个问题,把 Target 下 Build...可以Podfile添加以下语句,把所有Pod的Bitcode都关闭。...WKWebView的问题 (1)如果某个VC引用了WKWebViewiOS9系统下点击返回按钮返回上级页面的时候会造成crash....dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //数据加载完成再设置代理

1.8K21

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

1.创建WKWebView加载本地HTML。 WKWebView的创建有几点不同: 1.初始化多了个configuration参数,当然这个参数我们也可以不传,直接使用默认的设置就好。...如果在HTML使用alert等弹窗,就必须得实现UIDelegate的相应代理方法。 3.iOS 9之前WKWebView加载本地HTML会有一些问题。...2.拦截URL 使用WKNavigationDelegate的代理方法,拦截自定义的URL来实现JS调用OC方法。...4.WKWebView使用弹窗 在上面提到,如果在WKWebView使用alert、confirm 等弹窗,就得实现WKWebView的WKUIDelegate相应的代理方法。...例如,我JS显示alert 弹窗,就必须实现如下代理方法,否则alert 并不会弹出。

3.4K50
领券