SwiftUI:了解SwiftUI APP的基本结构

当您创建一个新的SwiftUI应用程序时,您将得到一些文件,总共可能有100行代码。大部分代码什么都不做,只是作为占位符给你一些东西来填充——你现在可以放心地忽略它,但是随着你学习这门课程的进展,它会发生变化。

在Xcode中,您应该可以在左侧的空间中看到以下文件,该空间称为项目导航器:

  • AppDelegate.swift 包含用于管理应用程序的代码。以前在这里添加代码是很常见的,但现在这种情况非常少见。
  • SceneDelegate.swift 包含在应用程序中启动一个窗口的代码。这在iPhone上没有多大作用,但在iPad上,这一点很重要,iPad用户可以同时打开你的应用程序的多个实例。
  • ContentView.swift 包含程序的初始用户界面(UI),是我们在此项目中执行所有工作的地方。
  • Assets.xclassets 是一个资源目录——一个您希望在您的应用程序中使用的图片集合。您还可以在这里添加颜色,以及应用程序图标、iMessage贴纸等。
  • LaunchScreen.storyboard 是一个可视化编辑器,用于创建一小块UI,以便在应用程序启动时显示。
  • info.plist 是一个特殊值的集合,它向系统描述你的应用程序是如何工作的——它是哪个版本,你支持哪个设备方向,等等。不是代码但仍然是很重要的东西。
  • Preview Content 是一个黄色文件夹,其中包含Preview Assets.xcarets —— 这是另一个资源目录,特别是您在设计用户界面时要使用的图像,以便让您了解它们在程序运行时的外观。

我们为这个项目所做的所有工作都将在 ContentView.swift 中进行,Xcode已经为您打开了它。它的顶部有一些注释,这些注释在开头用两个斜杠标记,Swift会忽略它们,因此您可以使用它们来添加关于代码工作方式的解释。

下面是十行左右的代码:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在我们开始编写自己的代码之前,有必要过一下所有的这些功能,因为有几个功能是新的。

  • 首先,import SwiftUI告诉Swift我们希望使用SwiftUI框架提供的所有功能。苹果为我们提供了很多框架,比如机器学习、音频播放、图像处理等等,所以我们不想假设我们的程序想要使用所有的东西,而是说我们想使用哪些部分,以便加载它们。

  • 其次,struct ContentView: View创建一个名为ContentView的新结构体,表示它遵循View协议。View来自SwiftUI,它是您想在屏幕上绘制的任何内容都必须采用的基本协议——所有文本、按钮、图像等都是视图,包括您自己的布局,可以组合其他视图。

  • 第三,var body: some View定义了一个新的计算属性body,它有一个有趣的类型:some View。这意味着它将返回符合视图协议的内容,但额外的some关键字添加了一个重要限制:它必须始终是被返回的同一类型的视图——您不能有时返回一种类型的内容,有时又返回另一种不同类型的内容。
    我们稍后将讨论此功能,但现在请记住,它意味着“必须从此属性返回一种特定的视图”
    View协议只有一个要求,即您有一个名为body的计算属性,该属性返回some View。您可以(也将会)向视图结构中添加更多的属性和方法,但body是唯一一个必须要有的。

  • 第四,Text(“Hello World”)使用字符串“Hello World”创建一个文本视图。文本视图是绘制到屏幕上的简单静态文本,并将根据需要自动换行。

ContentView结构体下面,您将看到一个ContentView_Previews结构体,它遵循PreviewProvider协议。这段代码实际上不会构成最终应用程序的一部分,而是专门供Xcode使用,以便它可以在代码旁边显示UI设计的预览。

这些预览使用一个称为画布(canvas)的Xcode特性,它通常在代码的右侧直接可见。如果需要,您可以自定义预览代码,它们只会影响画布显示布局的方式——它不会更改实际运行的应用程序。

Xcode只能在macOS Catalina或更高版本上显示画布。如果看不到画布并且已经在运行Catalina,请转到 Editor 菜单并选择 Canvas。

如果没有Catalina,则需要在模拟器中运行代码以查看其外观。

提示:您经常会发现代码中的错误会阻止Xcode的画布更新——您会看到类似“Automatic preview updating paused(自动预览暂停更新)”的内容,并可以按 Resume 来修复它。因为你会经常这样做,让我推荐一个重要的快捷方式:Option+Cmd+P和单击Resume是一样的。

原文来自Hacking with iOS: SwiftUI Edition 的
Understanding the basic structure of a SwiftUI app

Previous: Hacking with iOS: SwiftUI Edition Next: 创建表单

赏我一个赞吧~~~

你可能感兴趣的:(SwiftUI:了解SwiftUI APP的基本结构)