首页
学习
活动
专区
工具
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
  • 肘子的 Swift 周报 #043| 记忆归档和唤醒

    庆幸的是,iOS 的照片应用具备从海量影像中自动整理回忆的功能。近十余年来发生的事情,它会不时以专题形式呈现,助我唤醒那些已被归档的记忆。...在本文中,我们将探讨两种不同的图片平铺实现方式,并由此引申出一种在 SwiftUI 中较少使用的 Image 构建方法。...iOS WKWebView 页面与档案资源 Preload 预载 / Cache 缓存研究[9] ZhgChgLi[10] 在本文中,ZhgChgLi 探讨了 iOS 开发中使用 WKWebView 时的页面预加载和缓存策略...文章详细介绍了 HTTP 缓存机制,并分析了多种可能的预加载和缓存方案,包括完善 HTTP 缓存、WKWebView 预加载、使用 URLProtocol 和 WKURLSchemeHandler 等。...这种方法不仅为 iOS 开发者提供了在 CI 环境中进行性能测试的新途径,还成功克服了标准 XCTest Performance 工具的一些固有限 ★Swift 6 的一个主要目标是通过编译器层面的严格检查来最大程度地消除数据竞争

    9410

    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.6K20

    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.7K193

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

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

    2.9K00

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

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

    3.2K00

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

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

    4.9K30

    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中引用了WKWebView,在iOS9系统下点击返回按钮返回上级页面的时候会造成crash....dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //数据加载完成再设置代理

    1.9K21

    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.6K50

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

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

    2.3K20
    领券