<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SwiftUI 入门实战 on 编程那些事儿</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/</link><description>Recent content in SwiftUI 入门实战 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 21 Sep 2026 23:02:48 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Swift/swiftUIBasic/index.xml" rel="self" type="application/rss+xml"/><item><title>第 1 章 视图是值，不是控件</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-01-Views-Are-Values/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-01-Views-Are-Values/</guid><description>&lt;h1 id="第-1-章视图是值不是控件"&gt;第 1 章：视图是值，不是控件&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;这一章建立两个模型，后面五章都建在它上面：&lt;strong&gt;视图是一份描述，不是屏幕上的东西；能变的只有状态。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="11-先看一个让人不安的事实"&gt;1.1 先看一个让人不安的事实&lt;/h2&gt;
&lt;p&gt;下面这个视图看着很普通——一个标题加一个星标：&lt;/p&gt;</description></item><item><title>第 2 章 状态是唯一的事实来源</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-02-State-Is-The-Source/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-02-State-Is-The-Source/</guid><description>&lt;h1 id="第-2-章状态是唯一的事实来源"&gt;第 2 章：状态是唯一的事实来源&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;第 1 章说&amp;quot;视图是描述&amp;quot;。这一章回答下一个问题：&lt;strong&gt;描述依据什么生成？&lt;/strong&gt; 答案是状态。而 SwiftUI 里绝大多数的 bug，都能归结成一句话——&lt;strong&gt;你以为的那个状态，框架没在看。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>第 3 章 布局是一次谈判</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-03-Layout-Is-A-Negotiation/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-03-Layout-Is-A-Negotiation/</guid><description>&lt;h1 id="第-3-章布局是一次谈判"&gt;第 3 章：布局是一次谈判&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;这是全教程&lt;strong&gt;最值得慢读&lt;/strong&gt;的一章。SwiftUI 里绝大多数&amp;quot;界面不听话&amp;quot;的问题，根因都在这一章的三条规则上。而且这是唯一一章&amp;quot;不看数字就学不会&amp;quot;的内容——所以下面的每个结论都配了实测。&lt;/p&gt;</description></item><item><title>第 4 章 对齐与容器</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-04-Alignment-And-Containers/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-04-Alignment-And-Containers/</guid><description>&lt;h1 id="第-4-章对齐与容器"&gt;第 4 章：对齐与容器&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;第 3 章解决了&amp;quot;我该多大&amp;quot;。这一章解决&amp;quot;我和别人怎么摆在一起&amp;quot;。&lt;strong&gt;对齐是 SwiftUI 里最容易被误解的一个词&lt;/strong&gt;——因为它不是你直觉里的&amp;quot;往哪儿挪&amp;quot;。&lt;/p&gt;</description></item><item><title>第 5 章 动画的本质：两个值之间的补间</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-05-Animation-Is-Interpolation/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-05-Animation-Is-Interpolation/</guid><description>&lt;h1 id="第-5-章动画的本质"&gt;第 5 章：动画的本质&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;大多数人以为动画是&amp;quot;给界面加个效果&amp;quot;。SwiftUI 不是这么设计的：&lt;strong&gt;动画是&amp;quot;让一次状态变化被看懂&amp;quot;的手段。&lt;/strong&gt; 想通这一点，&lt;code&gt;.animation&lt;/code&gt; 怎么加、加在哪，就都有答案了。&lt;/p&gt;</description></item><item><title>第 6 章 手势与身份</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-06-Gestures-And-Identity/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-06-Gestures-And-Identity/</guid><description>&lt;h1 id="第-6-章手势与身份"&gt;第 6 章：手势与身份&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;最后一章把两件事接上：&lt;strong&gt;用户的手&lt;/strong&gt;（手势）和&lt;strong&gt;框架的记忆&lt;/strong&gt;（身份）。前者让你能交互，后者决定了交互产生的东西能不能留住。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="61-手势的两个状态临时-vs-持久"&gt;6.1 手势的两个状态：临时 vs 持久&lt;/h2&gt;
&lt;p&gt;先看一个最常见的需求：拖一个方块，松手后它停在原地。&lt;/p&gt;</description></item><item><title>第 7 章 组件化：从一堆修饰符到一个零件</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-07-Composition-And-Components/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-07-Composition-And-Components/</guid><description>&lt;h1 id="第-7-章组件化"&gt;第 7 章：组件化&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;前六章解决的是&amp;quot;一个界面怎么正确做出来&amp;quot;。这一章解决另一个问题：&lt;strong&gt;做第二个界面时，怎么不把第一个界面的代码抄一遍。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>第 8 章 列表与导航：多页面应用怎么搭</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-08-Lists-And-Navigation/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-08-Lists-And-Navigation/</guid><description>&lt;h1 id="第-8-章列表与导航"&gt;第 8 章：列表与导航&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;前面七章讲的是&amp;quot;怎么把一个界面做对&amp;quot;。这一章开始讲 App：&lt;strong&gt;一堆页面怎么组织，数据怎么变成一行行看得见的东西。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>第 9 章 数据落地：三态、网络与持久化</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-09-Data-And-Persistence/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-09-Data-And-Persistence/</guid><description>&lt;h1 id="第-9-章数据落地"&gt;第 9 章：数据落地&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;前八章做出来的界面，数据都是硬编码的。这一章解决最后一块：&lt;strong&gt;数据从哪来、存在哪、失败时怎么办。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一章也是第 2 章 &lt;code&gt;@Observable&lt;/code&gt; 的收口——那个模型终于要装上真正的数据了。&lt;/p&gt;</description></item><item><title>第 10 章 性能与调试</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-10-Performance-And-Debugging/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-10-Performance-And-Debugging/</guid><description>&lt;h1 id="第-10-章性能与调试"&gt;第 10 章：性能与调试&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;这一章要先把一个流传极广的说法拆掉：&lt;strong&gt;&amp;quot;&lt;code&gt;body&lt;/code&gt; 被调用太多次所以卡&amp;quot;&lt;/strong&gt;——这句话基本是错的。搞清楚为什么错，你才知道该优化什么。&lt;/p&gt;</description></item><item><title>第 11 章 可访问性与适配</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-11-Accessibility-And-Adaptation/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-11-Accessibility-And-Adaptation/</guid><description>&lt;h1 id="第-11-章可访问性与适配"&gt;第 11 章：可访问性与适配&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;前面十章都在让界面&amp;quot;在你自己的机器上好看&amp;quot;。这一章处理一件更实际的事：&lt;strong&gt;换一个用户、换一套系统设置，它还站得住吗。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>第 12 章 绘制：Shape、Path 与 Canvas</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-12-Drawing-And-Shapes/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-12-Drawing-And-Shapes/</guid><description>&lt;h1 id="第-12-章绘制"&gt;第 12 章：绘制&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;前十一章的界面都是&amp;quot;系统给的零件拼出来的&amp;quot;。这一章开始自己画——因为有些视觉效果，系统没提供现成的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="121-shape用代码描述一个图形"&gt;12.1 &lt;code&gt;Shape&lt;/code&gt;：用代码描述一个图形&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Shape&lt;/code&gt; 协议比 &lt;code&gt;View&lt;/code&gt; 还简单，它只要求一件事：&lt;strong&gt;给定一个矩形，给出一个 &lt;code&gt;Path&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>第 13 章 视觉特效：材质、模糊与混合</title><link>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-13-Visual-Effects/</link><pubDate>Sun, 20 Sep 2026 11:40:00 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/swiftUIBasic/Chapter-13-Visual-Effects/</guid><description>&lt;h1 id="第-13-章视觉特效"&gt;第 13 章：视觉特效&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;最后一章。前面十二章让界面&amp;quot;正确、能用、对所有人友好&amp;quot;。这一章处理最后那层：&lt;strong&gt;质感。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;⚠️ 但特效也是&lt;strong&gt;最容易滥用&lt;/strong&gt;的一块。所以这一章会反复回到同一个问题：&lt;strong&gt;这个特效解决了什么问题？&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>