当前位置: 首页 > news >正文

ios开发:用wkwebview显示网页内容

一,代码

列表页面,点击跳转:

//
//  ContentView.swift
//  helloworld2
//
//  Created by liuhongdi on 2026/3/28.
//import SwiftUI
import Alamofirestruct ContentView: View {@State private var message = "加载中..."// 初始化 ViewModel@StateObject private var viewModel = PoemViewModel()var body: some View {NavigationStack {VStack {Text(message)List {if viewModel.isLoading && viewModel.poems.isEmpty {ProgressView("加载中..")}ForEach(viewModel.poems){ poem inNavigationLink(value: poem) {PoemRow(poem: poem) // 进一步拆分出子视图}}}.navigationTitle("唐诗鉴赏1").navigationDestination(for: Poem.self) { poem inWebView(urlString: "https://baidu.com")}// 调用逻辑.task{await viewModel.fetchData()}.refreshable{await viewModel.fetchData()}}}}
}// 一行元素的view
struct PoemRow: View {let poem: Poemvar body: some View {HStack(spacing: 15) {AsyncImage(url: URL(string: poem.image)) { image inimage.resizable().aspectRatio(contentMode: .fit)} placeholder: {Color.purple.opacity(0.1)}.frame(width: 60, height: 60).background(Color.purple).cornerRadius(8)VStack(alignment: .leading){Text(poem.title).font(.headline)Text(poem.author).font(.subheadline).foregroundColor(.secondary)}}}
}#Preview {ContentView()
}

webview的页面:

import SwiftUI
import WebKitstruct WebView: UIViewRepresentable {// 接收参数let urlString: String// 创建并返回 WKWebView 实例func makeUIView(context: Context) -> WKWebView {return WKWebView()}// 当 SwiftUI 状态更新时,加载 URLfunc updateUIView(_ uiView: WKWebView, context: Context) {if let url = URL(string: urlString) {let request = URLRequest(url: url)uiView.load(request)}}
}

二,测试效果:

image

 

http://www.jsqmd.com/news/592596/

相关文章:

  • pikachu靶场--SSRF攻击
  • 从内核事件到用户响应:构建udev规则实现USB设备智能感知
  • Arduino项目实战:用MOS管驱动大功率LED的完整电路设计(附防烧毁技巧)
  • Crawl4AI实战:5分钟用LLM爬取CSDN博客文章(附完整代码)
  • EtherCAT DC时钟同步原理与补偿机制深度解析
  • 免费开源图像查看器Nomacs完整指南:从零开始掌握专业图像管理
  • 从学习到应用:基于快马平台部署你的第一个python实战项目——天气查询工具
  • Oracle 数据仓库雪花模型设计(完整实战方案)
  • 补角为什么会导致 x 和 y 坐标互换?
  • 电容、电阻、红外…选哪个?一文讲透不同触摸传感器的应用场景和避坑指南
  • [NOI2015] 小园丁与老司机
  • 3种核心技术破解90%网络资源下载难题:res-downloader全功能解析
  • 避坑指南:n8n调用MinerU MCP时常见的3个配置错误及解决方法
  • Oracle 星座模型(Galaxy Schema)可落地设计实例(含完整建表、索引、ETL、查询代码)
  • SystemVerilog实战:如何用semaphore解决多进程资源竞争问题(附代码示例)
  • 实战指南:基于快马平台开发可部署的nt动漫主题粉丝留言墙
  • 极限什么时候“不存在”?(目的地找不到了)
  • 【ROS】深入解析ros-Noetic-desktop-full安装依赖冲突的排查与修复
  • 本地域名解析
  • 如何用iTwin.js快速构建基础设施数字孪生应用?[特殊字符]
  • 新手入门:借助快马平台零代码起步,动手实现首个网络标识分析小工具
  • 告别付费教程!手把手教你用Libero完成FPGA项目仿真与下载(基于Verilog)
  • 利用AI写教材,低查重率保障,高效完成教材编写任务
  • 实战指南,基于快马AI生成的代码,快速部署高可用《构石》期刊官网
  • 探寻2026年优质球齿联轴器机构,口碑推荐助你选,挠性联轴器/球齿联轴器/齿式传动轴/十字传动轴,球齿联轴器公司口碑推荐 - 品牌推荐师
  • Cat.1 vs Cat.4:物联网开发者如何选择?从共享单车到智能家居的实战指南
  • AI辅助开发新思路:让快马AI为n8n工作流注入智能决策能力
  • 突破语言壁垒:XUnity Auto Translator全场景应用指南
  • 如何将影像组学特征与T细胞炎症型肿瘤免疫微环境(TIME)建立关联,并进一步解释其与免疫治疗响应、患者预后的机制联系
  • 别再手动拖文件了!用Python的boto3库自动化管理你的S3存储(附清理过期文件脚本)