SwiftUI-1 应用程序结构

本文介绍了SwiftUI应用程序的基本结构,包括App、Scene和View协议。重点讲解了App结构中的主应用程序入口点和Scene中的ContentView,展示了如何构建包含图像和文本的视图层次结构。在SwiftUI中,ContentView遵循View协议,通过VStack排列子视图,如Image和Text,以创建用户界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SwiftUI应用程序结构

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视图的边缘添加特定于平台的默认填充量,即空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值