SettingsView/设置页 的实现

1. 创建设置视图 SettingsView.swift

import SwiftUI/// 设置页面
struct SettingsView: View {/// 环境变量,呈现方式:显示或者关闭@Environment(\.presentationMode) var presentationMode/// 默认网址let defaultURL = URL(string: "https://www.google.com.hk")!// https://www.youtube.com/c/swiftfulthinkinglet youtubeURL = URL(string: "https://www.youtube.com")!// https://www.buymeacoffee.com/nicksarnolet coffeeURL = URL(string: "https://www.buymeacoffee.com")!/// 交易货币网址let coingeckoURL = URL(string: "https://www.coingecko.com")!/// 个人网站 https://www.nicksarno.comlet personalURL = URL(string: "https://blog.csdn.net/u011193452")!var body: some View {NavigationView {ZStack {// 背景Color.theme.background.ignoresSafeArea()// 内容List {// 应用介绍及网址 部分swiftfulThinkingSection.listRowBackground(Color.gray.opacity(0.2))//.listRowBackground(Color.theme.background.opacity(0.5))// 交易货币介绍及网址 部分coinGeckoSection.listRowBackground(Color.gray.opacity(0.2))// 开发者及网址 部分developerSection.listRowBackground(Color.gray.opacity(0.2))// 应用网址 部分applicationSection.listRowBackground(Color.gray.opacity(0.2))}.modifier(ListBackgroundModifier())}.font(.headline).accentColor(.blue).listStyle(.grouped).navigationTitle("Settings").toolbar {ToolbarItem(placement: .navigationBarLeading) {XMarkButton(presentationMode: presentationMode)}}}}
}extension SettingsView{/// 应用介绍及网址 部分private var swiftfulThinkingSection: some View{Section {VStack(alignment: .leading) {Image("logo").resizable().frame(width: 100, height: 100).clipShape(RoundedRectangle(cornerRadius: 20))Text("This app was made by following a @SwiftfulThinking course on YouTube. It uses MVVM Architecture, Combine, and CoreData!").font(.callout).fontWeight(.medium).foregroundColor(Color.theme.accent)}.padding(.vertical)// 跳转网址Link("Subscribe on YouTube 🎉", destination: youtubeURL)Link("Support his coffee addiction ☕️", destination: coffeeURL)} header: {Text("Swiftful Thinking")}}/// 交易货币介绍及网址 部分private var coinGeckoSection: some View{Section {VStack(alignment: .leading) {Image("coingecko").resizable().scaledToFit().frame(height: 100).clipShape(RoundedRectangle(cornerRadius: 20))Text("The cryptocurrency data that is used in this app comes from a free API from CoinGecko! Prices may be slightly delayed.").font(.callout).fontWeight(.medium).foregroundColor(Color.theme.accent)}.padding(.vertical)// 跳转网址Link("Visit CoinGecko 🦎", destination: coingeckoURL)} header: {Text("CoinGecko")}}/// 开发者及网址 部分private var developerSection: some View{Section {VStack(alignment: .leading) {Image("logo-transparent").resizable().frame(width: 100, height: 100).clipShape(RoundedRectangle(cornerRadius: 20))Text("This app was developed by Nick. It uses SwiftUI and is written 100% in Swift. The project benefits from multi-threading, publishers/subscribers, and data persistance.").font(.callout).fontWeight(.medium).foregroundColor(Color.theme.accent)}.padding(.vertical)// 跳转网址Link("Visit Website 🤙", destination: personalURL)} header: {Text("Developer")}}/// 应用网址 部分private var applicationSection: some View{Section {// 跳转网址Link("Terms of Service", destination: defaultURL)Link("Privacy Policy", destination: defaultURL)Link("Company Website", destination: defaultURL)Link("Learn More", destination: defaultURL)} header: {Text("Application")}}
}/// 适配 iOS 16 ListView 背景修改问题
struct ListBackgroundModifier: ViewModifier {@ViewBuilderfunc body(content: Content) -> some View {if #available(iOS 16.0, *) {content.scrollContentBackground(.hidden)} else {content}}
}struct SettingsView_Previews: PreviewProvider {static var previews: some View {SettingsView()}
}

2. 效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝天猫商品历史价格API接口

获取淘宝商品历史价格接口的步骤如下: 注册淘宝开放平台:首先在淘宝开放平台上注册一个账号,并进行登录。创建应用:在淘宝开放平台上创建一个应用,并获取该应用的App Key和App Secret,用于后续的接口调用。…

外卖App点菜页-两个tableView联动【1】

这里新开一个项目 配置两个tableView的section和row以及ce 处理常见的tableView约束错误rowHeight 去掉滚动条 tableView的sectionHeaderxib初探 默认自带效果 不用这个 配置sectionHeader的内容 点击左侧tableViewCell使右边tableView 设置cell被选中后的样式及初始被选中ce…

Python爬虫提高排名

在如今竞争激烈的互联网时代,网站的SEO优化变得尤为重要。而Python爬虫作为一种强大的工具,可以帮助网站主们提升搜索排名,吸引更多的流量和用户。本文将为您揭秘如何利用Python爬虫来改善您的SEO优化,并帮助您提升搜索排名。无论…

淘宝天猫店铺所有商品数据接口,淘宝API接口

获取淘宝店铺所有商品数据接口的步骤如下: 获取授权:使用 OAuth 2.0 协议对应用进行授权,以便能够访问店铺的商品信息。获取店铺信息:使用淘宝 API 的 taobao.shop.get 接口,传入店铺的 user_id 参数,获取…

yolov8 strongSORT多目标跟踪工具箱BOXMOT

1 引言 多目标跟踪MOT项目在Github中比较完整有:BOXMOT , 由mikel brostrom提供。在以前的版本中,有yolov5deepsort(版本v3-v5), yolov8strongsort(版本v6-v9),直至演变…

使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

前言:因为要写一个安卓端app,实现从服务器中获取电影数据,所以需要搭建服务端代码,之前学过C#,所以想用C#实现服务器段代码用于测试,本文使用C#语言,使用asp.net core web api组件搭建服务器端&…

BN体系理解——类封装复现

from pathlib import Path from typing import Optionalimport torch import torch.nn as nn from torch import Tensorclass BN(nn.Module):def __init__(self,num_features,momentum0.1,eps1e-8):##num_features是通道数"""初始化方法:param num_features:特征…

产品升级!全球尺度下原核基因组关键基因共进化无标题

微生物是群落型的生存方式,高通量测序时代到来后,掀起了针对微生物群落整体研究的高潮,比如基于功能基因/16S/ITS/扩增子、宏基因组等进行群落多样性分析。但是,我们基于分离培养等方法获得单菌落,针对单菌开展基因组、…

十一、WSGI与Web框架

目录 一、什么是WSGI1.1 WSGI接口的组成部分1.2 关于environ 二、简易的web框架实现2.1 文件结构2.2 在web/my_web.py定义动态响应内容2.3 在html/index.html中定义静态页面内容2.4 在web_server.py中实现web服务器框架2.5 测试 三、让简易的web框架动态请求支持多页面3.1 修改…

Python in Visual Studio Code 2023年10月发布

排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展于 2023 年 10 月发布! 此版本包括以下公告: Python 调试器扩展更新弃用 Python 3.7 支持Pylint 扩展更换时的 Lint 选项Mypy 扩展报告的范围和守护程序模式G…

mysql面试题36:MySQL的binlog有几种录入格式?分别有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL的binlog有几种录入格式?分别有什么区别 MySQL的binlog(二进制日志)是用于记录数据库的更改操作的一种机制,它可以用于数据恢复、数据复…

Java集合(三)--- List接口

文章目录 一、List接口常用实现类的对比二、List接口中的常用方法代码 提示:以下是本篇文章正文内容,下面案例可供参考 一、List接口常用实现类的对比 二、List接口中的常用方法 代码 package com.tyust.edu;import org.junit.Test;import java.util.A…

2023年【危险化学品生产单位安全生产管理人员】及危险化学品生产单位安全生产管理人员模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考前必练!安全生产模拟考试一点通每个月更新危险化学品生产单位安全生产管理人员模拟考试题题目及答案!多做几遍,其实通过危险化学品生产单位安…

CRMEB多商户商城系统阿里云集群部署教程

注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间 然后创建一个镜像仓库 查看并记录镜像公网地址…

自定义类型:结构体,枚举,联合 (1)

1 结构体的声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag { member-list; }variable-list; 例如描述一个学生: struct是结构体关键字,不能省略。 …

运维大数据平台的建设与实践探索

随着企业数字化转型的推进,运维管理面临着前所未有的挑战和机遇。为应对日益复杂且严峻的挑战,数字免疫系统和智能运维等概念应运而生。数字免疫系统和智能运维作为新兴技术,正引领着运维管理的新趋势。数字免疫系统和智能运维都借助大数据运…

同创永益成为英迈首家签约生态伙伴

日前,同创永益已和英迈签署生态运营战略协议,并正式成为英迈全新打造的GTM生态圈的首位签约合作伙伴。双方将携手对“同创数字韧性平台”产品进行一站式联合解决方案的持续整合,并将大力推动该联合解决方案在市场上的进一步拓展。 云原生时代…

vite+vue3+ts中使用require.context | 报错require is not defined | 获取文件夹中的文件名

vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名 目录 vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名一、问题背景二、报错原因三、解决方法 一、问题背景 如题在vitevue3ts中使用required.context时报…

科技资讯|9月新能源汽车零售74.3万辆,充电桩迎来发展高峰

据中国乘联会发布的初步数据,中国 9 月份乘用车市场零售 202.8 万辆,同比增长 6%,环比增 6%。今年以来,我国乘用车市场累计零售 1,524 万辆,同比增长 2%。 乘联会预计,9 月份新能源车市场零售 74.3 万辆&a…

Java架构师系统架构设计资源估算

目录 1 认识资源估算1.1 预估未来发展1.2 资源估算的意义 2 资源估算方法2.1 确定系统目标2.2 并发用户数2.3 指标数据 3 资源估算的经验法则4 资源估算的常见参考数据4.1 带宽估算4.2 nginx估算4.3 tomcat估算4.4 操作系统估算4.5 redis估算4.6 mysql估算 5 并发人数估算5.1 请…