SwiftUI-1 应用程序结构

SwiftUI应用程序结构

  • App structure
  • Content view

SwiftUI是一个声明性框架,可以帮助构建应用程序的用户界面。SwiftUI应用程序主要由AppSceneView协议(Protocol)组成。

App structure

应用程序结构描述应用程序的内容和行为,每个SwiftUI应用程序都有且只有一个主应用程序结构。当在Xcode中创建一个名称为“XXX”的SwiftUI项目时,会自动创建一个“XXXApp.swift”的文件,这个文件中定义了其应用程序结构。

import SwiftUI

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
  • import SwiftUI表示应用程序导入SwiftUI框架,使得应用程序可以访问SwiftUI的符号和功能。

  • @main属性指示SwiftUI应用程序的入口点,入口点负责应用程序的启动。SwiftUI应用程序包含且包含一个入口点。

  • struct MyApp: App{}MyApp结构遵循App协议。

  • var body: some Scene {}该结构实现了计算属性的主体。该属性返回被称为Scene(场景)的应用程序内容。一个Scene包含定义一个应用程序用户界面的视图层次结构。SwiftUI提供了不同类型的Scene,包括WindowGroup、Window,、DocumentGroup和 Settings。

  • WindowGroup()表示使用WindowGroup场景来表示应用程序显示的主窗口。SwiftUI为WindowGroup提供特定平台的行为,例如,在MacOS和iPadOS中一个Group可以同时打开多个窗口,在MacOS中,用户可以将window group的多个实例组合成一组标签。

  • ContentView()表示该场景包含的内容视图。它是一个创建由图像和文本组成的视图层次的自定义视图。

Content view

在SwiftUI中,一个Scene(场景)包含应用程序显示为其用户界面的视图层次结构(view hierarchy)。视图层次结构定义了相对于其它视图的视图布局。在本文的示例中,WindowGroup场景包含ContentView使用其它视图组成的视图层次。

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
        }
        .padding()
    }
}
  • import SwiftUI表示应用程序导入SwiftUI框架,使得ContentView可以访问SwiftUI的符号和功能。

  • struct ContentView: View {}表示ContentView遵循View协议。一个View定义了一个或多个出现在屏幕上某处的视觉元素。一个View通常由其它的Views组成,从而创建一个视图层次结构。

  • var body: some View {}是 ContentView实现计算属性( Computed Property)的主体。实现Body是SwiftUI代码中常见的一种模式;例如当Structure符合App、Scene和View等协议时。

  • VStack{}表示ContentView包含SwiftUI提供的视图VStack,它垂直排列子视图。同样的还有HStack、LazyHStack等。

  • Image(systemName: "globe")表示VStack中的第一个子视图Image,这是一个显示图像的视图,这里表示要显示一个系统符号图像globe(地球)。想globe这样的符号来自SF Symbols,这是一个你可以在应用程序中使用的图标库。

  • .imageScale(.large)用于设置图像的缩放,.foregroundColor(.accentColor)用于为视图图像添加颜色。

  • Text("Hello, world!")表示VStack中的第二个视图是文本,用于显示一行或多行只读文本的视图。

  • .padding()表示ContentView将padding修饰符应用于VStack,向VStack视图的边缘添加特定于平台的默认填充量,即空格。

你可能感兴趣的:(iOS,swiftui,swift,xcode)