EmptyView

// 声明方法
EmptyView()

ContentUnavailableView

iOS 17 中的新功能。

当您的应用程序没有任何内容可显示时,SwiftUI 的 ContentUnavailableView 可以显示标准的用户界面。它非常适合您的应用依赖尚未提供的用户信息的情况,例如当您的用户尚未创建任何数据时,或者他们正在搜索某些内容但没有结果时。

举个例子,如果您正在制作一个应用程序,让用户写下他们想要记住的 Swift 代码片段,那么默认情况下它可能会以没有代码片段的方式开始。因此,您可以像这样使用:


//这将显示 SF Symbols 中的一个大 Swift 图标,以及下面的标题文本“无片段”
ContentUnavailableView("No snippets", systemImage: "swift")

//这将显示 SF Symbols 中的一个大 signature 图标,以及下面的标题文本“无片段”
ContentUnavailableView("No snippets", systemImage: "signature.th")

//还可以在下面添加额外的描述文本行,指定为 Text 视图,以便您可以添加额外的样式,例如自定义字体或自定义颜色:
ContentUnavailableView(
	"No snippets", 
	systemImage: "swift", 
	description: Text("You don't have any saved snippets yet.")
)
//如果想要完全控制,可以提供标题和描述的单独视图,以及一些要显示的按钮以帮助用户开始使用:
ContentUnavailableView {
    Label("No snippets", systemImage: "swift")
} description: {
    Text("You don't have any saved snippets yet.")
} actions: {
    Button("Create Snippet") {
        // create a snippet
    }
    .buttonStyle(.borderedProminent)
}

SwiftUI 还内置了一些 ContentUnavailableView 的实例,方便使用。

// 例如:显示失败的搜索结果屏幕
ContentUnavailableView.search

// 可以自定义其内容
ContentUnavailableView.search(text: "Life, the Universe, and Everything")