使用Xcode13进行Swift开发2

article/2025/9/14 18:25:27

使用Xcode13进行Swift开发2

  • 1.应用功能
    • 1.1 UIScreen与systemName
    • 1.2 struct,ScrollView,padding,ForEach和创建列表
    • 1.3 GeometryReader
    • 1.4 list,combine

使用Xcode13进行Swift开发https://blog.csdn.net/gavinliu266/article/details/126407896
Monterey错误已在本博客中修正

1.应用功能

快捷键与SFsymbols请看文首链接。

1.1 UIScreen与systemName

为了方便演示,我将新建一个swift文件
选择一个swift文件,右键-New File-SwiftUI View,命名CardView,并将Targets中的Test_WidgetExtension钩上
创建一个简单的卡片

struct CardView: View {var body: some View {ZStack {Image("Monterey").resizable().frame(width:200,height:200).cornerRadius(20).shadow(color: Color.black.opacity(0.4), radius: 30, x: 0, y: 30)VStack {Text("Macos12 Monterey").font(.title).fontWeight(.bold).frame(width:200).foregroundColor(.white)Image(systemName: "person.2").resizable().aspectRatio(contentMode: .fit).frame(width:100,height: 100).foregroundColor(.white)}}}
}

这里width我们暂时设置200
systemName:
在SFsymbols中找到想要的图标,但是如果在右边栏中显示的系统ios版本比你的Xcode所支持的版本要高,那么你也不能使用它。例如我的Xcode13.4.1对于请添加图片描述是可以支持的,但是对于请添加图片描述由于需要iOS 16.0+,所以不能支持

接下来Command 点击ZStack,嵌入一个HStack,然后提取子视图,命名为Card

现在效果:在这里插入图片描述

接下来我可以把

.frame(width:200,height:200)

替换成

.frame(width:UIScreen.main.bounds.width / 1.5,height:200)

并且把

.frame(width:100,height: 100)

替换成

.frame(width:UIScreen.main.bounds.width / 3,height: 100)

还有

.frame(width:200)

替换成

.frame(width:UIScreen.main.bounds.width / 1.5)

当然还有更好的方法,但是我们先用这个
在这里插入图片描述

1.2 struct,ScrollView,padding,ForEach和创建列表

现在我们只有一个,那么如果有多个的话,我不想创建多个Card程序,所以我需要把一些值用参数传进来
在Card中

var body: some View{...}

之前,我们添加

var image: String
var text: String
var systemImage: String

然后将两个图像和一个文本用参数代替

struct Card: View {var image: Stringvar text: Stringvar systemImage: Stringvar body: some View {ZStack {Image(image).resizable().frame(width:UIScreen.main.bounds.width / 1.5,height:200).cornerRadius(20).shadow(color: Color.black.opacity(0.4), radius: 30, x: 0, y: 30)VStack {Text(text).font(.title).fontWeight(.bold).frame(width:UIScreen.main.bounds.width / 1.5).foregroundColor(.white)Image(systemName: systemImage).resizable().aspectRatio(contentMode: .fit).frame(width:UIScreen.main.bounds.width / 3,height: 100).foregroundColor(.white)}}}
}

然后在调用的地方改成

Card(image: "Monterey", text: "Macos12 Monterey", systemImage: "person.2")

然后在HStack前面加上
ScrollView:滚动视图,
.horizontal:横向滚动,
.showIndicators: false:不显示滚动条
.padding默认给全方位添加默认值填充,第一个参数用于设置填充方向,第二个参数用于设置填充大小

ScrollView(.horizontal ,showsIndicators: false) {

后面补上

   .padding(.horizontal,20).padding(.bottom,80)
}

全选,Ctrl + I调整缩进

在这里插入图片描述

好了,让我们开始创建一个结构体
在这里插入图片描述

然后创建一个列表

var CardViewList = [CardList(image: "Monterey", text: "Macos12 Monterey", systemName: "person.3"),CardList(image: "BigSur", text: "Macos11 Big Sur", systemName: "person.2"),CardList(image: "Catalina", text: "Macos10.15 Catalina", systemName: "person")
]

回到Card中,删掉var image等三个,换成

var cardviewlist: CardList

将以下代码

Image(image)

换成

Image(cardviewlist.image)

将以下代码

Text(text)

换成

Text(cardviewlist.text)

将以下代码

Image(systemName: systemImage)

换成

Image(systemName: cardviewlist.systemName)

到Card(…),Command+单击,选择Repeat
改以下代码

ForEach(0 ..< 5)

ForEach:循环

ForEach(CardViewList.indices,id: \.self)

并将以下代码

Card(image: "Monterey", text: "Macos12 Monterey", systemImage: "person.2")

换成

Card(cardviewlist: CardViewList[index])

然后给HStack加一个间距
现在是

ScrollView(.horizontal ,showsIndicators: false) {HStack(spacing:70) {ForEach(CardViewList.indices,id: \.self) { index inCard(cardviewlist: CardViewList[index])}}.padding(.horizontal,20).padding(.bottom,80)
}

很好
在这里插入图片描述

1.3 GeometryReader

关于UIScreen.main.bounds不是最好的解决方案上文提到过了,如下,当改变了屏幕的宽度或高度时,它不会自动调整请添加图片描述
所以这个时候我们就需要用到GeometryReader了
首先,将HStack嵌入几何阅读器,并添加bounds in请添加图片描述
然后在Card里面添加一个变量

var bounds: GeometryProxy

就可以替换以下代码了

UIScreen.main.bound

换成

bounds.size

并且在调用时添加变量

Card(cardviewlist: CardViewList[index],bounds: bounds)

完美
请添加图片描述

由于UIScreen是静态的,所以没有办法在变更时对其值进行更改,但GeometryReader是动态的,所以当我们变换布局时,它的值也会变动,因此卡片的大小也就跟着变动了

1.4 list,combine

当我们使用app时,经常会看见列表
请添加图片描述
图片来源于网络

首先要想要实现的话,我们首先要创建列表

创建一个swiftUI类型的文件,命名为MacosList,

然后在创建一个swiftUI类型文件,命名为MacosListStore
进入MacosListStore,删除全部代码,然后粘贴以下代码用于编辑

import SwiftUI
import Combine
class ListStore : ObservableObject {@Published var list : [CardList] = CardViewList
}

接着在MacosList中的var body: some View {…}之前加入

@ObservedObject var store = ListStore()func addList(){store.lists.append(CardList(image: "Monterey", text: "Macos12 Monterey", systemName: "person.3"))}

然后var body: some View中加入

GeometryReader { bounds inNavigationView{List {ForEach(store.lists.indices,id: \.self) { index inNavigationLink(destination: Card(cardviewlist: store.lists[index], bounds: bounds)) {HStack {Image(store.lists[index].image).resizable().aspectRatio(contentMode: .fit).frame(width: 80, height: 80).background(Color.black).cornerRadius(20).padding(.trailing,4)VStack(alignment: .leading, spacing: 8.0) {Text(store.lists[index].text).font(.headline).fontWeight(.bold).lineLimit(2).foregroundColor(Color.black)Image(systemName: store.lists[index].systemName).foregroundColor(.black)}}.padding(.vertical,8)}}.onDelete{ index inself.store.lists.remove(at: index.first!)}.onMove{(source: IndexSet,destination: Int) inself.store.lists.move(fromOffsets: source,toOffset: destination)}}.navigationBarTitle(Text("Updates")).navigationBarItems(leading: Button(action: addList) {Text("Add Update")} ,trailing: EditButton())}}

上面的代码由于比较多,所以我就不一一解释了,就是把列表中的静态数据转换成动态数据,然后输出。通过onDelete和onMove来进行移动和删除操作。

另外名字之所以取为MacosList而不去为List,是因为如果取为List的话会报错,因为与List同名

最后回到ContentView,删除<-50的判断,然后在sheet里面换成MacosList

在这里插入图片描述
效果很好


http://chatgpt.dhexx.cn/article/GJKSqHP9.shtml

相关文章

Xcode简明教程(使用Xcode编写C++语言程序)

Xcode 是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等,可以用来开发 Mac OS X 和 iOS 上的应用程序。Xcode使用LLVM/Clang作为编译器。 去App store下载Xcode,打开点击Command Line Tool,再选c++,完成。 在Xcode上运行C语言程序 在 Xcode 上运行C语言程序需…

Mac m1 使用Xcode配置OpenMp教程完善版

目录 安装brew安装llvm配置xcode添加libomp.dylib文件代码测试引用 安装brew 自己搜教程 安装llvm brew install llvm安装完成后使用 brew info llvm&#xff0c;复制保存安装路径&#xff08;后续配置会用&#xff0c;路径用自己的&#xff09; 下图中为&#xff1a;/opt/h…

Xcode下使用git

1.创建仓库 可以使用命令来创建&#xff0c;做法参考之前的文章git代码管理工具使用 也可以登录github&#xff0c;找到new repository&#xff0c;点击后进入创建页面输入标题helloworld&#xff0c;点击创建。 创建好后进入创建好的repository拷贝地址&#xff0c;我此处…

写给设计师同学的xcode使用教程: 教你用 Xcode 做原型设计

在过去的一个月&#xff0c;我每天早上 7 点起床&#xff0c;一直工作到晚上 7 点&#xff0c;在完成在 Carshare.hk 的那份全职工作之余&#xff0c;一直都在致力于完善那个 Ripple 应用。这个月全是关于 iOS 方面的经验&#xff0c;我面对的挑战是在年底前发布这个 iOS 应用之…

使用Xcode13进行Swift开发

使用Xcode13进行Swift开发 1.软件Xcode 2.快捷键3.应用功能3.1 VStack,HStack,ZStack3.2 frame,foregroundColor,cornerRadius,shadow,resizable与aspicRatio3.3 font,fontWeight,offset,rotationEffect和rotation3DEffset3.4 State,onTapGuesture与animation3.5 gesture和Disp…

Xcode使用教程详细讲解 1

Xcode使用教程详细讲解是本文要介绍的内容&#xff0c;Xcode是一个款强大的IDE开发环境&#xff0c;就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此&#xff0c;如果你要成为Mac 程序的开发者&#xff0c;灵活运用Xcode工具是你必须做的第一步…

xcode编程c语言,使用xcode编写c语言的方法介绍

使用xcode编写c语言的方法介绍 发布时间&#xff1a;2020-03-26 17:08:31 来源&#xff1a;亿速云 阅读&#xff1a;149 作者&#xff1a;小新 今天小编分享的是使用xcode编写c语言的方法介绍&#xff0c;可能大家对xcode并不陌生&#xff0c;或者从来没有了解过xcode。但是不用…

使用Xcode 真机无线调试

1.iPhone和Xcode连在同一WIFI下 2.打开Xcode 顶部菜单 选中Window -> Device and Simulators 3.选中Connect via network (注意&#xff1a;勾选前还要用数据线连接,测试机要设置密码,出弹窗的话要点击信任) 真机设备旁边出现小地球 就代表成功了

Xcode 使用教程(简版)

1.Xcode IDE概览 说明&#xff1a;从左到右&#xff0c;依次是“导航窗格&#xff08;Navigator&#xff09;->边列&#xff08;Gutter&#xff09;->焦点列&#xff08;Ribbon&#xff09;->代码编辑窗口&#xff08;Standard/Primary Editor&#xff09;”。 边列&a…

Xcode使用教程详细讲解

from: http://mobile.51cto.com/iphone-273735.htm http://mobile.51cto.com/iphone-273738.htm Xcode使用教程详细讲解是本文要介绍的内容&#xff0c;Xcode是一个款强大的IDE开发环境&#xff0c;就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境…

Xcode使用教程详细讲解 (下)

转载&#xff1a;http://mobile.51cto.com/iphone-273738.htm Xcode使用教程详细讲解 &#xff08;下&#xff09;是本节要介绍的内容&#xff0c;继续Xcode使用教程详细讲解 &#xff08;上&#xff09;的内容开始介绍。 j)Xcode中书签的使用 如果你要将代码中的某个部分标注起…

Xcode使用教程详细讲解 (上)

http://mobile.51cto.com/iphone-273735.htm 本文介绍的是Xcode使用教程详细讲解&#xff0c;Xcode是一个款强大的IDE开发环境&#xff0c;就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。 AD&#xff1a;2013云计算架构师峰会课程资料下载 Xcode使…

xcode使用教程

xcode 增加ios版本 window > Devices and Simulators 打开ios版本下载页面下载ios版本&#xff0c;并安装 xcode 增加设备 window > Devices and Simulators 打开选择系统和手机类型新增模拟器 遇到的问题 macOs版本过高&#xff0c; 无法创建 解决方案 打开Xcode…

IOS开发入门之Xcode使用教程详细讲解(全)

摘要&#xff1a;本次的IOS开发入门学习中&#xff0c;Xcode使用教程详细讲解是本文要介绍的内容&#xff0c;Xcode是一个款强大的IDE开发环境&#xff0c;就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境。因此&#xff0c;如果你要成为Mac 程序的开…

Xcode简明教程(使用Xcode编写C语言程序)

原文地址::http://c.biancheng.net/view/476.html 相关文章 1、IOS开发&#xff1a;Xcode入门开发第一个HelloWorld程序----https://jingyan.baidu.com/article/a17d5285c9afc48099c8f279.html 2、30分钟学会iOS 11开发环境xcode 9图文教程----https://blog.csdn.net/epubit1…

使用Xcode创建第一个c语言项目和源文件进行编程(xcodes使用教程)

一、Xcode简介 Xcode 是运行在操作系统Mac OS X上的集成开发工具&#xff08;IDE&#xff09;&#xff0c;由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计&#xff0c;编码、测试、调试都在一个简单的窗口内完成。 二、如…

【Xcode】使用教程

之前一直都是用的windows下的codeblocks进行刷题的&#xff0c;现在改成mac电脑的之后&#xff0c;下载后发现codeblocks无法使用&#xff0c;改成使用Xcode进行刷题。 一、创建一个C文件 打开一个Xcode 这样就创建好了一个C文件 二、刷leetcode时的使用方式 如果用&l…

主流聚合支付对比分析【转】

前言 最近准备做聚合支付相关的产品&#xff0c;做新产品除了要知道自己做什么还要知道目前的竞品都做了些什么&#xff0c;所以对目前市面上的主流聚合支付产品做了对比分析&#xff0c;每家产品的一些实现细节&#xff0c;这里出于保护没有明确写出来&#xff0c;其实大家看…

福利工具,如何利用小程序免费下载积分文件呢?【第02期】

往前回顾 如何利用小程序免费下载积分文件呢&#xff1f; 福利工具&#xff0c;如何利用小程序免费下载积分文件呢&#xff1f;【第01期】 第02期可下载文件 全国大学生电子设计竞赛设计报告模板(最新).doc lcd1602滚屏显示 高频功率放大器设计-课程设计 pthreads-w32-2-7-0…

局域网共享设置软件_局域网软件(支持文件共享)

Windows 无论是在公司或者是学校&#xff0c;大家或多或少的会接触到共享文件&#xff0c;Windows XP 的网上邻居 &#xff0c;一直到现在Windows10系统的文件共享&#xff0c;共享文件操作起来也许是不那么友好&#xff0c;有时候明明设置好了的&#xff0c;但是其他电脑就是访…