2023 年 O 基础学习 SwiftUI

关于 SwiftUI

SwiftUI 于2019年6月3日在苹果的全球开发者大会(WWDC)上首次亮相。在这次活动中,苹果正式宣布了 SwiftUI,并将其列为 iOS 13 和 macOS Catalina 的一部分。

image.png SwiftUI 是一种用于构建用户界面的 UI 框架。SwiftUI 的设计目标是简化用户界面开发过程,提高开发效率,并在不同的环境里实现更高程度的代码共享。自发布以来,SwiftUI 已经经历了多个版本的更新,不断增强其功能和性能。以下是 SwiftUI 的一些主要特点:

  1. 声明性语法: SwiftUI 使用声明式语法,开发人员可以通过描述界面的方式来定义用户界面。这种方式更加直观、简洁,开发者只需关注描述用户界面的内容,而无需处理底层的实现细节。
  2. 实时预览: SwiftUI 提供实时预览功能,使开发者能够在代码编写的同时即时查看界面的外观和行为。这有助于快速调整和测试界面,提高开发效率。
  3. 自动化布局: SwiftUI 通过使用自动布局来处理不同设备和屏幕尺寸之间的差异。这简化了适配工作,开发者无需手动管理所有细节。
  4. 数据驱动视图: SwiftUI 的视图是数据驱动的,当数据发生变化时,界面会自动更新以反映最新的状态。这降低了手动管理界面状态的复杂性。
  5. 可组合性: SwiftUI 鼓励使用小型、可组合的视图来构建复杂的用户界面。这使得代码更易于理解、维护和重用。
  6. 深度集成: SwiftUI 深度集成了其他苹果生态系统的技术,如 Combine 框架用于响应式编程,以及 Swift 语言的特性。这样,开发者可以更好地利用整个苹果开发平台。

通过 SwiftUI,开发者能够更高效地构建出现代化、动态且易于维护的用户界面,同时充分发挥 Swift 编程语言的优势。它后续必然会逐渐成为苹果生态系统中应用程序界面开发的首选框架。

多么简单?

如果你了解产品设计,比如微信首页,点击进入详情页,知道导航是什么,那你应该可以看得懂下面的代码。

swift
复制代码
struct WechatView: View {
    var users: [User] = []
    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(users) { user in
                    NavigationLink {
                        WechatDetailView(user: user)
                    } label: {
                        HomeCellView(user: user)
                    }
                }
            }.navigationTitle("Wechat")
        }
    }
}

1.jpeg

从上面的代码里,有几个关键字,简单解释下:

  • NavigationView:也就是我们的导航栏,首页显示微信名字和加号按钮的地方就是导航,并且在各个页面也基本都存在的,由他来控制着页面的加载和返回;
  • ScrollView:也就是让页面可以滑动;
  • ForEach:也就是循环,用来展示首页的列表数据;
  • NavigationLink:也就是点击首页的聊天列表,可以进入到详情页;
  • HomeCellView:首页显示的每个聊天内容;
  • WechatDetailView:首页聊天点击进入的详情页;
  • navigationTitle:显示导航栏里的微信名称。 如果你看得懂这些知识,那基本可以判定你可以学习 SwiftUI,当然如果真正做到和微信首页可以使用的效果,还需要有一些更加细节的修改,但是这些基础的知识如果你能了解,对于学习使用 SwiftUI 基本难度不大,只需要详细了解各个模块里对应代码的使用即可。

适合 O 基础的人群

在之前 Apple 应用的开发里,需要涉及到不同的内容,比如按钮,输入框,日期选择都是不同的类型元素,我们每个都需要仔细去了解学习才可以更好的使用,就像是有的是陨石,有的是足球,而有的是海水,而在 SwiftUI 来,每个使用的元素基本都是一个 View,只是这个 View 的属性可能不一样,比如 View 就是人类,而 SwiftUI 里的元素,有的是白皮肤,有的是黄皮肤,有的蓝色眼球,而有的耳朵比较大,因为都是人类,这些不同的种族作为人的共性都是通用的,比如双脚直立行走,比如可以适应环境。

2.jpeg SwiftUI 的这种特性,使得初学者在入门难度上大大降低,0 基础入门,2-3 天就可以写一个最简单的静态页面,随着最近几年 SwiftUI 的逐步稳定,已经逐步成为很多开发者的首选,特别是刚入门的开发者。

可以用 SwiftUI 来做什么?

互联网发展到 2023 年,基本所有的产品形态都已经存在,作为独立开发者,我们还能做什么成为一个比较尖锐的问题,有几点建议可以参考。

12.jpeg

  • 选择工具类型的产品,相对比来说这类产品复杂度不高,架构相对简单,使用 SwiftUI 可以很好的满足这类产品需求。
  • 从自身发现小需求,如果你作为一个 0 基础小白,那最好的方法是从自身的需求来寻找一个出发点,然后查看市场上已经存在的同类产品,找到一个不一样的切入点,满足一个特定的需求,然后运营你的目标用户。
  • 从新思考,在已经存在的这些产品类目里,我们常用的笔记熟悉的产品里,从新去思考,发现一些可以优化或者现在满足的不太好的产品点,去满足。大家熟知的产品经理纯银老师在微博里透露的下一款工具类型的打卡记录的产品,就属于这种类型。
  • 即使你现在暂时没有特别好的点子,只是对这个感兴趣也是可以的,不同的点子在你接触和使用产品的过程中总会自动跳跃出来的,而那个时候你已经有了开发这个技能。

一些可能的问题

SwiftUI 从 2019 年上线之后,经历了几个大版本的变动,现在已经基本上处于稳定的状态,但是在各种未知的情况下依然可能存在一些小的问题,比如某些版本导航可能出问题了,但是我们终究有些办法去解决。

  • SwiftUI 提供了一个可以嫁接 Swift 的方法,一些存在问题的内容我们可以直接使用 Swift 的功能,而不需要担心你不会,存在的问题在互联网上基本都已经有解决方案。
  • 改变设计方案,有些可能存在的问题,我们可以通过修改设计方案来改变问题,以我使用 SwiftUI 到目前为止的经验,存在的问题都是可以解决的。
  • 版本支持,在越老的版本上可能存在的问题越多,因此建议如果我们使用 SwiftUI 开发应用,就支持最近的 1-2 个大版本即可,无法做到适配到太低的版本。

学习资源

SwiftUI 作为一个如此简单的入门开发框架,作为一个 0 基础的小白,该如何入门呢,有很多的开发资源我们可以学习使用。

  • 苹果的官方教程,各种涉及到的内容都可以在官方网站找到释义。
  • Hacking with Swift,Paul Hudson有大量开发方面的内容,免费和付费的都有,提供了大量优秀的免费内容,100 Days of SwiftUI 便是面向 SwiftUI 初学者的一个合集。
  • Raywenderlich 是一个技术的老牌书籍出版公司,提供了大量的免费课程,同时有有很多 SwiftUI 的内容,可以进行学习。
  • ChaoCode 是一位台湾女生的视频讲解内容,适合有一定基础之后,更深入的了解很多背后的原理。
  • 肘子的 Swift 记事本,肘子老师关于 SwiftUI 开发内容的博客,涉及到的内容比较全面,可以多多关注。

以上的资源更偏向于已经有一定基础的人群,在我们学习和使用 SwiftUI 的过程中发现,对于 0 基础用户的教程相对较少,因此我们开发了「做个应用」这个 App,将我们学习到的内容整理出来,让一个 0 基础的人,可以从 0 开始到做一个完整的上线应用,从 Xcode 的使用,到基础元素,到设计模式,到测试,到打包上线,到应用商店内容设置等等,详细的描述了各个环节涉及到的内容,让你只需要按照章节进行学习即可,帮助你快速获得 SwiftUI 这项技能。

关于「做个应用」

支持 iPhone、iPad 和 Mac 端,可以在 App Store 搜索 「做个应用」 或者 「SwiftUI」 下载。

O 基础模式

按照章节的难易程度,我们划分为了 0 基础模式和中高级模式,作为初学者,你可以直接筛选 0 基础模式,更快的了解 SwiftUI,更容易的上手,学习完 SwiftUI 的基础知识,你也就可以做出一个最简单的基础应用。

12.jpeg

每日小知识

每日推送的小知识,涉及到方方面面,让你每天学到一点新鲜的内容,在不知不觉中可以得到更多的提高,同时也可以督促你进行学习,了解更多方面的内容,日积月累你也可以很熟练的掌握 SwiftUI 的内容。

12.jpeg

代码块

针对不是在章节里的一些内容,我们以代码块的形式展示给你,比如 Mac 下如何设置开机启动,iOS 下页面返回按钮隐藏的时候如何设置页面左侧滑动返回,这些涉及到开发里的方方面面的细节内容可以更好的帮助你进行快速开发,不会卡在一些常见的难点上,让你学习的难度大大降低。

12.jpeg

和你一起做个练习

学习的目的在于掌握内容,因此我们在学习的过程中需要大量的练习,针对练习的内容,我们主要提供了两个大类:

12.jpeg

  1. 首先是章节练习,针对每个章节里设计到的内容,我们都会提供相应的内容来进行练习,通过练习来巩固学习到的内容,并且进行深化。
  2. 其次是一起做个应用,我们里面包含了一个完整的开源应用,我们会带着你一起从 0 开始,逐步完善到上线。带你了解开发的各个环节。

视频教学

如果文字的教学过于无聊,我们提供了视频的教学内容,可以在设置里关注我们的各个视频平台进行学习。与其他博主的视频相比,更偏向于教学如何使用,可能暂时不会有太多的原理性的讲解,待后续内容都完善之后会带来 SwiftUI 更多原理性的讲解视频。

笔记

12.jpeg

对于入门学习 SwiftUI 前期可能存在各种问题,就像我们学习的时候需要一个笔记来记录我们学到的并没有完全掌握的内容,做个应用也推出了笔记功能,你可以把平时学习到的内容,需要后续复习,或者可能在未来会用到的内容,添加到笔记里,方便后续随时寻找使用。 另外一个点就是我们平时可能会看到很多的文章内容,但是这些内容在我们下次希望使用的时候却没办法快速找到,因此在笔记里我们可以通过快捷分享的方式添加到笔记里,方便后期的查找。 笔记的管理也是提高我们在使用笔记时能快速找到内容的方法,我们可以通过文件夹和标签进行管理,相同类型的内容我们可以设置文件夹,比如 iOS 和 Mac,比如编辑器,或者网页,也可以通过设置标签来管理内容,在添加的时候给内容打上相应的标签,就可以直接筛选标签找到相应的内容。

12.jpeg

另外对于目前 iOS 端,我们可以通过分享来添加链接到笔记里,大大节省了操作时间。

练习

就像我们作为学生的学习,需要大量的练习,在你入门之后,需要大量的练习来让我们更深化对元素的时候,对概念的理解,除去跟随应用里的练习,我们还可以自行寻找内容进行练习。需要注意的是找内容来自己练习是可以的,但是如果要发布的时候,注意版权问题。

12.jpeg

  • Figma 社区,Figma 是一款设计软件,在社区里有很多的开源设计,我们可以找到相应的内容,就得到一份 UI 设计稿,我们就可以根据设计来实现出来,当你看到自己实现出来的设计,会有很大的成就感,可以很大的激励你的学习。
  • Dribble 和 Behance 社区,是国外的设计社区,有点是设计内容更丰富,缺点是大部分都只有图片,需要自己根据图片大致开发。
  • UI 中国等国内的设计社区,也可以在里面找到很多相关的设计,可以自行用来练习。

万事开头难,如果你想「做个应用」,希望 SwiftUI 可以帮助到你。

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Servlet基础知识

Servlet是Java提供的一门动态的web资源开发技术 Servlet是JavaEE规范之一&#xff0c;其实就是一个接口&#xff0c;将来我们需要定义Servlet类实现Servlet接口&#xff0c;并由web服务器运行Servelt Servlet快速入门 创建web项目&#xff0c;导入Servlet依赖坐标 <depe…

百度Apollo新版本Beta技术沙龙参会体验

在自动驾驶领域&#xff0c;百度的Apollo一直是业界开源的标杆。其持续升级和创新的开源项目为整个自动驾驶行业树立了典范&#xff0c;不仅推动了技术的发展&#xff0c;也为广大的社区开发者们提供了学习和参考的范本。最近百度发布了Apollo新的Beta版本&#xff0c; 新版本B…

【PID学习笔记 6 】控制系统的性能指标之二

写在前面 上文介绍了控制系统的稳态与动态、过渡过程、阶跃响应以及阶跃信号作用下过渡过程的四种形式。本文紧接上文&#xff0c;首先总结过渡过程的分类&#xff0c;然后介绍控制系统的性能评价&#xff0c;最后重点介绍控制系统性能指标中的单项指标。 一、过渡过程的分类…

四.多表查询

多表查询 1.一个案例引发的多表连接1.1案例说明1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3案例分析与问题解决 2.多表查询分类讲解分类1&#xff1a;等值连接vs非等值连接分类2&#xff1a;自连接vs非自连接分类3&#xff1a;内连接vs外连接 3.SQL99语法实现多表…

读书笔记-《数据结构与算法》-摘要2[冒泡排序]

冒泡排序 核心&#xff1a;冒泡&#xff0c;持续比较相邻元素&#xff0c;大的挪到后面&#xff0c;因此大的会逐步往后挪&#xff0c;故称之为冒泡。 public class BubbleSort {public static void main(String[] args) {int unsortedArray[] new int[]{6, 5, 3, 1, 8, 7, 2…

旋转设备状态监测与预测性维护:提高设备可靠性的关键

在工业领域的各个行业中&#xff0c;旋转设备都扮演着重要的角色。为了确保设备的可靠运行和预防潜在的故障&#xff0c;旋转设备状态监测及预测性维护变得至关重要。本文将介绍一些常见的旋转设备状态监测方法&#xff0c;并探讨如何利用这些方法来实施预测性维护&#xff0c;…

Java的第二十一章:网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可以编写出高质量的网络通信程序。 …

周周爱学习之快速排序

快速排序&#xff0c;顾名思义&#xff0c;快速排序是一种速度非常快的一种排序算法 平均时间复杂度为O(),最坏时间复杂度为O()数据量较大时&#xff0c;优势非常明显属于不稳定排序 1.算法描述 每一轮排序选择一个基准点&#xff08;pivot&#xff09;进行分区 让小于基准点…

supervisord + nginx + Daphne + django4.0 最新asgi服务器部署实验

由于需要用到channel&#xff0c;最近在研究通过asgi部署django。 先吐槽一下官方文档&#xff0c;这个地方讲的非常简单。然后中文互联网环境能找到的都是3.0试用的说明&#xff0c;这玩意是不是真的没人用啊&#xff1f;还是说Django已经脱离时代了。。。 简单研究了一下&am…

洗地机好用吗?口碑好的洗地机有哪些?

自从洗地机开始引入市场以来&#xff0c;它一直受到人们的关注。它在解放家庭清洁劳动力和提供快速方便的清洁方面表现出色&#xff0c;超越了多年来传统的拖把清洁方式。越来越多的人选择使用洗地机来完成家庭清洁任务。如果你也对洗地机产生了浓厚的兴趣&#xff0c;并想购买…

【MATLAB源码-第93期】基于matlab的白鲸优化算法(BWO)和鲸鱼优化算法(WOA)机器人栅格路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 白鲸优化算法&#xff08;BWO&#xff09; 白鲸优化算法是受到白鲸捕食和迁徙行为启发的一种算法。其主要特点和步骤包括&#xff1a; 1. 搜索食物&#xff08;全局搜索&#xff09;&#xff1a;算法模仿白鲸寻找食物的行为。…

【模型报错记录】‘PromptForGeneration‘ object has no attribute ‘can_generate‘

通过这个连接中的方法解决&#xff1a; “PromptForGeneration”对象没有属性“can_generate” 期刊 #277 thunlp/OpenPrompt GitHub的 问题描述&#xff1a;在使用model.generate() 的时候报错&#xff1a;PromptForGeneration object has no attribute can_generate 解决方法…

Java中子类都继承父类的什么?

1.构造方法 构造方法不可以被继承的&#xff0c;为什么呢&#xff1f;应为名称的定义&#xff0c;构造方法是一类名称与类名一致&#xff0c;无返回值和类型修饰的一种。所以如果子类继承父类的构造方法的话&#xff0c;那么就违背了构造方法的规定。 2.成员属性 成员属性是…

C# Demo--汉字转拼音

1.Nuget安装NPOI及Pinyin4net 2.Demo 代码部分 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using System.IO;…

【Linux】基础IO--重定向理解Linux下一切皆文件缓冲区

文章目录 一、重定向1.什么是重定向2.dup2 系统调用3.理解输入重定向、输出重定向和追加重定向4.简易shell完整实现 二、理解linux下一切皆文件三、缓冲区1.为什么要有缓冲区2.缓冲区的刷新策略3.缓冲区的位置4.实现一个简易的C语言缓冲区5.内核缓冲区 一、重定向 1.什么是重定…

【5】PyQt按钮

QPushButton 常见的按钮实现类包括:QPushButton、QRadioButton和QCheckBox QPushButton是最普通的按钮控件&#xff0c;可以响应一些用户的事件 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton import sysdef func():print("按下按钮啦&#xff0c;火…

YOLOv8优化策略:简单高效的模块-现代反向残差移动模块 (iRMB) | | ICCV2023 EMO

🚀🚀🚀本文改进:设计了一种面向移动端应用的简单而高效的现代反向残差移动模块 (Inverted Residual Mobile Block, iRMB),它吸收了类似 CNN 的效率来模拟短距离依赖和类似 Transformer 的动态建模能力来学习长距离交互,引入YOLOV8 🚀🚀🚀YOLOv8改进专栏:http:…

Python神器解析时间序列数据:数据分析者必读

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 时间序列数据是在许多领域中都至关重要的数据类型&#xff0c;它涵盖了一系列按时间顺序排列的数据点。Python作为一种强大的数据分析工具&#xff0c;提供了许多库和工具&#xff0c;能够有效地处理、分析和可视…

2D与3D图形的基本变换

1. 2d transformations 1.1缩放(Scaling) 其实这个转换非常简单&#xff0c;如图所示就是把x与y进行s倍的缩放&#xff0c;而我们图中的这个矩阵正好满足这一算法。 1.2镜像(Reflection) 这个镜像变换可以和上面的做类比&#xff0c;简单看一下就行。 1.3错切(Shearing) 当然…

【力扣】54. 螺旋矩阵

题解&#xff1a; 这里当然就不能只是通过双循环来解题了&#xff0c;因为会烦死。这道题的关键点在于左右边界的确定&#xff0c;参考官方解题法在这里写出我的解题思路。 首先看图&#xff0c;螺旋且顺时针&#xff0c;所以我们可以先遍历从左至右的&#xff0c;上边界加一…