首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Swift花园
猫克杯
创建于2021-06-18
订阅专栏
分享 Swift 和 SwiftUI 相关的一些知识和心得
等 100 人订阅
共116篇文章
创建于2021-06-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
watchOS 学习笔记 | Big Picture
相比 macOS,iOS 和 tvOS ,watchOS (目前为止) 并非是完全独立的平台,一定程度上依赖配对的 iPhone 。 watchOS app 跟 iOS app 最显著的差异是前者被严格的分成了两部分。第一部分称为 Watch app —— 有点混淆对吧?正常理…
【译】[SwiftUI 100 天] Animations - part4
SwiftUI 一个最强大的特性是可以定制视图的显示和隐藏。之前你已经见过我们如何使用常规的 if 条件来实现条件化视图,也就是我们可以根据条件变化在视图体系中插入或者移除视图。 过渡控制这些插入和移除如何发生。我们可以使用内建的过渡,以各种方式组合它们,甚至完全自定义过渡。 …
[SwiftUI 100 天] Animations - part3
在这一节,我想要把两个你已经理解的东西放在一起,单独理解都没问题,但放在一起可能有点伤脑筋。 之前我们已经理解 modifiers 的顺序会如何影响视图。因此,我们写过这样的代码: 这是因为如果我们在调整 frame 之前给背景上色的话,只有原始的区域被上色,而不是之后 fra…
【译】[SwiftUI 100 天] Animations - part2
animation() modifier 可以应用到任何的 SwiftUI 绑定,以动画方式呈现绑定的值从当前值到新值的变化。即使这个数据看起来不像能以动画呈现的类型,动画也能工作。比如一个布尔型 —— 你可以想象从 1.0 到 2.0 的动画过程,是因为我们可以想象 1.05…
[SwiftUI 100 天] Animations - part1
在这个新项目中我们又将回归技术介绍,这回我们要接触一些又快又美,而且被低估的东西:动画 。 动画因为各种原因存在,其中一定包括让 UI 看起来更好这一条。不过,它们也有助于帮助用户理解我们的程序正在发生的事情:当一个窗口消失,另一个窗口滑入的时候,用户可以很清楚地看到消失窗口的…
[SwiftUI 100 天] 登月计划 - part4 GeometryReader
当用户从我们的主列表中选择一项 Apollo 任务时 ,我们希望能显示有关任务的信息:它的图片,任务徽章,机组中所有的宇航员以及他们在机组中承担的角色。前两个不难,后面两项需要我们通过两个 JSON 文件匹配机组的 ID 和机组细节。 让我们先从简单的开始:创建一个新的 Swi…
[SwiftUI 100 天] 登月计划 - part3 泛型
我们给 Bundle 加了一个扩展,以便从我们的 app bundle 中加载特定类型的 JSON 数据,但是现在又来了一个类型: missions.json 。它包含更复杂的 JSON 。 每个任务有一个 ID 数字,意味着我们可以很方便地使用Identifiable 。 每…
[SwiftUI 100 天] 登月计划 - part2 NavigationLink
SwiftUI 的 NavigationView在我们的视图顶部显示一个导航栏,此外还做了一些其他的事情:它让我们可以把视图推进一个视图栈。实际上,这个机制是在 iOS 中导航用到的最基础的形式 —— 你可以在设置中看到:点击 Wi-Fi 或者通用,或者在消息应用里点击某人的名…
[SwiftUI 100 天] 登月计划 - part1 ScrollView
在这个项目中我们将构建一个让用户了解 NASA 的阿波罗航天计划相关任务和宇航员的 app 。你不仅会更精通 Codable, 重要的是可以接触到滚动视图,导航,以及更有趣的布局。 要做的事情很多,所以我们开始吧:用 Single View App 模板创建一个新的 iOS a…
[SwiftUI 100 天] iExpense - part4
遵循 ObservableObject 的类可以被用在多于一个 SwiftUI 视图,当这个类的 published 属性变化时,所有相关视图都会被更新。 在这个 app 中,我们要设计一个视图,专门用来添加新的花费项。当用户完成新增操作,我们会把新增的花费项添加到 Expen…
[SwiftUI 100 天] iExpense - part3
UserDefaults 对于存储像整数和布尔值这样的简单的数据非常好用,但是对于复杂数据 —— 比如自定义的 Swift 类型,我们需要稍微多做一些工作。 它有两个字符串,它们并不特别,整数,布尔型和浮点数也一样。即便是数组和字典,也都是很容易理解的类型。 处理像这样的类型,…
[SwiftUI 100 天] iExpense - part2
SwiftUI 提供了 onDelete() modifier ,用于从集合中删除对象。实践中,它几乎都是显式地配合 List 和 ForEach使用:我们用ForEach创建包含很多项的列表,然后把 onDelete() 添加到 ForEach 以便用户可以移除他们不想要的列…
[SwiftUI 100 天] iExpense - part1
我们接下来的两个项目会把你的 SwiftUI 技术带向更高的水平,超越基础。因为我们会探索有多屏界面的 app ,能够加载和保存用户数据,并且 UI 更加灵活。 这头一个项目叫 iExpense ,它的功能是追踪花销,把个人花费和商务花费分隔开。实现这个 app 的过程中我们会…
[SwiftUI 100天] Bucket List - part4
任何需要用户输入数据的 app ,通常最好是把数据存起来,不过在 Apple 的 framework 里,这件事说起来比做起来容易。 我们的 app 使用 MKPointAnnotation 来存储用户有兴趣游览的地点,而我们希望使用 iOS 存储来永久保存它们。创建一个新的 …
[SwiftUI 100天] Bucket List - part3
用户现在可以地图上放置饰针,但是还不能对这些饰针做任何操作 —— 他们不能附加标题和副标题。解决这个问题需要费一些思考,因为MKPointAnnotation 的标题和副标题是用可选字符串,而 SwiftUI 并不允许我们绑定可选型到文本控件。 解决的思路有多种,但最简单的一种…
[SwiftUI 100天] WorldScramble · part1
这个项目会是又一个游戏,不过游戏的方式是我介绍更多 Swift 和 SwiftUI 知识的伎俩 🙊。这个游戏会向玩家展示一个随机的 8 字母单词,让玩家从中拼出更多单词。举个例子,如果开始的单词是 “alarming” ,那么玩家可以拼出 “alarm”, “ring”,“m…
[SwiftUI 100天] BetterRest · part4
每当你添加一个 .mlmodel 文件到 Xcode 的时候,它会自动地创建一个同名的 Swift 类,但是你看不到这个类,也不需要看到 —— 它是编译过程自动生成的。不过呢,这也意味着,如果你给模型文件起了一个古怪的名字,那么那个自动生成的类名字也会一样古怪。 在我们的案例,…
[SwiftUI 知识碎片] 为什么 @State 只能在结构体中工作
我们知道,SwiftUI 的State 属性包装器被设计用于存储当前视图的本地数据。不过一旦你需要在视图之间共享数据,它就不管用了。 让我们把理论分解为代码 —— 下面是一个结构体,存储了用户的姓和名。 上面的代码可以完美工作:SwiftUI 很聪明,知道整个 User 对象包…
[SwiftUI 100天] BetterRest · part3
在 iOS 11 中,设备上机器学习已从 “极度困难” 变为 “相当可能,而且功能强大”,这要归功于一个苹果框架:Core ML。一年后,Apple 引入了另一个名为 Create ML 的框架,特性清单又多了 “易于执行” 这一点,在这之后次年,Apple 又引入了 Crea…
[SwiftUI 知识碎片] 自定义 MKMapView 标记
往 MKMapView 添加标记,是一种在位置上放置饰针的操作。在这个 app 中,我们希望可以点击这个标记获取更多信息,并且可以编辑。为了实现这个功能,我们需要用到一些 SwiftUI 的知识,一些 UIKit 的知识,还有一些 MapKit 的知识, 所有这些融合到一起,很…
下一页