SwiftUI 应用结构和行为

432 阅读4分钟

定义应用程序的入口点和顶级组织。

Overview

通过创建符合App协议的结构来声明您的应用程序,并向其添加一个或多个场景。您可以使用内置场景,如WindowGroup,也可以编写符合场景协议的自定义场景。场景包含定义应用程序用户界面的视图层次结构,并具有系统管理的生命周期。

通过应用CommandMenu实例向场景添加菜单命令。您还可以使用CommandGroup更新系统提供的菜单。当您为命令提供键盘快捷键时,iOS、iPadOS和tvOS会将这些快捷键作为键盘命令提供。

您可以使用SwiftUI与WidgetKit一起工作,向您的应用程序添加小部件。小组件可以快速访问应用程序中的相关内容。定义一个符合Widget协议的结构,并声明小部件的视图层次结构。

通过调用操作与系统的其他部分交互。例如,您可以使用OpenURLAction实例打开URL。

App 声明

Fruta: Building a Feature-Rich App with Swift​UI

创建共享代码库以构建一个提供小部件和轻 App的多平台应用程序。

Building a Document-Based App with Swift​UI

在SwiftUI多平台应用程序中创建、保存和打开文档。

Building a Great Mac App with Swift​UI

通过整合边栏、表格、工具栏和其他几个流行的用户界面元素,创建引人入胜的SwiftUI Mac应用程序。

protocol App

一种表示应用程序结构和行为的类型。

App

Declaration

protocol App

通过声明符合“应用程序”协议的结构来创建应用程序。实现所需的body计算属性来定义应用程序的内容:

@main
struct MyApp: App {    
var body: some Scene {     
WindowGroup {          
Text("Hello, world!")  
}   
}
}

在结构声明之前的是: @main 属性以指示您的自定义“应用程序”协议一致性提供了应用程序的入口点。该协议提供了系统调用以启动应用程序的main()方法的默认实现。您可以在应用程序的所有文件中只有一个入口点。

根据符合`场景'协议的实例编写应用程序的主体。每个场景都包含视图层次结构的根视图,并有一个由系统管理的生命周期。SwiftUI提供了一些处理常见场景的具体场景类型,例如用于显示文档或设置。您还可以创建自定义scene

@main
struct Mail: App {   
var body: some Scene {   
WindowGroup {         
MailViewer()      
}       
Settings {        
SettingsView()   
}   
}}

实施应用程序

var body: Self.Body

该应用程序的内容和行为。

Required.

associatedtype Body : Scene

代表应用程序内容的场景类型。

Required.

struct SceneBuilder

用于将场景集合组合成单个复合场景的结果生成器。

Running an App

init()

Creates an instance of the app using the body that you define for its content.

Required.

static func main()

Initializes and runs the app.

UILaunch​Screen

应用程序启动时要显示的用户界面。

UILaunch​Screens

当应用程序响应不同的URL方案启动时要显示的用户界面。

主要场景

protocol Scene

应用程序用户界面的一部分,生命周期由系统管理。

struct WindowGroup

呈现一组结构相同的窗口的场景。

struct DocumentGroup

支持打开、创建和保存文档的场景。

Secondary Scenes

struct Settings

显示用于查看和修改应用程序设置的界面的场景。

struct WKNotificationScene

响应接收指定类别的远程或本地通知而出现的场景。

Widgets

Building Widgets Using Widget​Kit and Swift​UI

创建小部件以在主屏幕上显示应用程序的内容,并自定义用户自定义设置。

Creating a Widget Extension

添加和配置扩展程序,以便在主屏幕、今天视图或通知中心显示应用程序的内容。

Keeping a Widget Up To Date

规划小部件的时间线,使用动态视图显示及时的相关信息,并在情况发生变化时更新时间线。

Making a Configurable Widget

通过向您的项目添加自定义SiriKit意图定义,为用户提供自定义小部件的选项。

protocol Widget

要显示在主屏幕上或通知中心的小部件的配置和内容。

protocol WidgetBundle

用于从单个小部件扩展中公开多个小部件的容器。

系统操作

struct OpenURLAction

提供打开URL的功能。