<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>1 布局基础 on 编程那些事儿</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/</link><description>Recent content in 1 布局基础 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 18:20:56 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/index.xml" rel="self" type="application/rss+xml"/><item><title>1.1 为你的内容选择合适的容器视图</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.1-PickingContainerViewsForYourContent/</link><pubDate>Sat, 12 Sep 2026 12:47:47 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.1-PickingContainerViewsForYourContent/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://developer.apple.com/documentation/swiftui/picking-container-views-for-your-content"&gt;https://developer.apple.com/documentation/swiftui/picking-container-views-for-your-content&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="11-为你的内容选择合适的容器视图"&gt;1.1 为你的内容选择合适的容器视图&lt;/h1&gt;
&lt;p&gt;使用栈、网格、列表和表单构建灵活的用户界面。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;SwiftUI 提供了一系列用于分组和重复视图的容器视图。有些容器纯粹用于结构和布局，例如栈视图、惰性栈视图和网格视图。另一些容器（例如列表和表单）还会附带系统标准的视觉效果和交互方式。&lt;/p&gt;</description></item><item><title>1.2 用栈视图构建布局</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.2-BuildingLayoutsWithStackViews/</link><pubDate>Sat, 12 Sep 2026 12:47:47 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.2-BuildingLayoutsWithStackViews/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://developer.apple.com/documentation/swiftui/building-layouts-with-stack-views"&gt;https://developer.apple.com/documentation/swiftui/building-layouts-with-stack-views&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="12-用栈视图构建布局"&gt;1.2 用栈视图构建布局&lt;/h1&gt;
&lt;p&gt;用基础容器视图组合出复杂的布局。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;单独来看，&lt;a href="https://developer.apple.com/documentation/swiftui/hstack"&gt;HStack&lt;/a&gt;、&lt;a href="https://developer.apple.com/documentation/swiftui/vstack"&gt;VStack&lt;/a&gt; 和 &lt;a href="https://developer.apple.com/documentation/swiftui/zstack"&gt;ZStack&lt;/a&gt; 都是很简单的视图。&lt;a href="https://developer.apple.com/documentation/swiftui/hstack"&gt;HStack&lt;/a&gt; 把视图排成水平一行，&lt;a href="https://developer.apple.com/documentation/swiftui/vstack"&gt;VStack&lt;/a&gt; 把它们排成垂直一列，而 &lt;a href="https://developer.apple.com/documentation/swiftui/zstack"&gt;ZStack&lt;/a&gt; 把它们层叠在一起。&lt;/p&gt;</description></item><item><title>1.3 用惰性栈视图对数据分组</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.3-GroupingDataWithLazyStackViews/</link><pubDate>Sat, 12 Sep 2026 12:47:47 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.3-GroupingDataWithLazyStackViews/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://developer.apple.com/documentation/swiftui/grouping-data-with-lazy-stack-views"&gt;https://developer.apple.com/documentation/swiftui/grouping-data-with-lazy-stack-views&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="13-用惰性栈视图对数据分组"&gt;1.3 用惰性栈视图对数据分组&lt;/h1&gt;
&lt;p&gt;在惰性栈视图中把内容拆分为多个逻辑区段。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://developer.apple.com/documentation/swiftui/lazyhstack"&gt;LazyHStack&lt;/a&gt; 和 &lt;a href="https://developer.apple.com/documentation/swiftui/lazyvstack"&gt;LazyVStack&lt;/a&gt; 视图都能显示按逻辑区段组织的视图组，分别把其子视图排成向水平方向和垂直方向延伸的行。这些栈之所以“惰性”，是因为栈视图在需要把项目渲染到屏幕上之前不会创建它们。与栈视图一样，惰性栈本身也不包含对滚动的支持，你应该把惰性栈视图包在 &lt;a href="https://developer.apple.com/documentation/swiftui/scrollview"&gt;ScrollView&lt;/a&gt; 容器中。&lt;/p&gt;</description></item><item><title>1.4 创建高性能的可滚动栈</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.4-CreatingPerformantScrollableStacks/</link><pubDate>Sat, 12 Sep 2026 12:47:47 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.4-CreatingPerformantScrollableStacks/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://developer.apple.com/documentation/swiftui/creating-performant-scrollable-stacks"&gt;https://developer.apple.com/documentation/swiftui/creating-performant-scrollable-stacks&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="14-创建高性能的可滚动栈"&gt;1.4 创建高性能的可滚动栈&lt;/h1&gt;
&lt;p&gt;借助滚动视图、栈视图和惰性栈，高效地显示大量重复视图。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;你的应用经常需要在容器视图中显示比设备屏幕可用空间更多的数据。水平和垂直栈是重复视图或视图组的好方案，但它们没有内置的滚动机制。你可以把栈包进 &lt;a href="https://developer.apple.com/documentation/swiftui/scrollview"&gt;ScrollView&lt;/a&gt; 来加入滚动，并在出现性能问题时改用惰性栈。&lt;/p&gt;</description></item><item><title>1.5 为视图添加背景</title><link>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.5-AddingABackgroundToYourView/</link><pubDate>Sat, 12 Sep 2026 12:47:47 +0800</pubDate><guid>https://before80.github.io/prgms/Swift/SwiftUI/viewlayout/1-LayoutFundamentals/1.5-AddingABackgroundToYourView/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://developer.apple.com/documentation/swiftui/adding-a-background-to-your-view"&gt;https://developer.apple.com/documentation/swiftui/adding-a-background-to-your-view&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="15-为视图添加背景"&gt;1.5 为视图添加背景&lt;/h1&gt;
&lt;p&gt;在视图后面组合出一个背景，并把它延伸到安全区域内边距之外。&lt;/p&gt;
&lt;h2 id="Overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;你可以用 &lt;a href="https://developer.apple.com/documentation/swiftui/view/background(alignment:content:)"&gt;background(alignment:content:)&lt;/a&gt; 视图修饰符把一个视图添加为背景。要在多个视图下添加背景，或者让背景比现有视图更大，你可以把这些视图放进一个 &lt;a href="https://developer.apple.com/documentation/swiftui/zstack"&gt;ZStack&lt;/a&gt; 中来分层，并把你想作为背景的视图放在视图栈的最底层。你还可以指定背景视图忽略安全区域内边距，从而把背景延伸到部分或全部边缘。&lt;/p&gt;</description></item></channel></rss>