iOS 入门教程

FreeGuideOnline 最新 2026-07-14

swift import UIKit

func greetUser(name: String) -> String { let message = "Hello, (name)!" return message }

let greeting = greetUser(name: "iOS Beginner") print(greeting) // 输出:Hello, iOS Beginner!

- `let` 声明常量,`var` 声明变量。
- Swift 支持类型推断,你不需要总是显式写明数据类型。
- 字符串插值使用 `\(变量名)`,方便拼接。
- Swift 语法简洁,强调可读性,你会在后续实践中逐步掌握。

## 你的第一个 iOS 应用:Hello World
在熟悉环境后,我们用最简单的工程来体验完整的创建、设计和运行流程。

### 创建新项目
1. 打开 Xcode,点击 “Create New Project”。
2. 在平台选择中选 “iOS”,App 模板下选择 “App” 并点击 Next。
3. 填写项目信息:
   - **Product Name**:HelloWorld
   - **Interface**:选择 SwiftUI(如果想体验最新的声明式 UI)或 Storyboard(经典界面构建方式)。本教程先选择 **SwiftUI**,它会自动生成更现代的默认代码。
   - **Language**:Swift
   - 其他选项保持默认,点击 Next 并选择项目存储路径。

### 预览与运行应用
项目打开后,左侧文件列表中默认含有 `ContentView.swift` 和 `HelloWorldApp.swift`。Xcode 已经帮你生成了可运行的空应用。
- 在预览画布中,你可以直接看到“Hello, world!”文本,这是 SwiftUI 模板的默认内容。
- 修改 `ContentView` 中的文本为:
```swift
Text("欢迎开启 iOS 开发之旅!")
    .padding()
  • 点击预览上的刷新按钮或使用快捷键 Option + Cmd + P 更新画布。
  • 选择顶部的模拟器设备(如 iPhone 15),点击三角形运行按钮(Cmd + R)。几秒钟后模拟器启动,你的第一个 App 就会显示出来。

理解应用入口

HelloWorldApp.swift 文件包含 App 协议的结构体:

@main
struct HelloWorldApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

@main 标明程序入口,WindowGroup 管理窗口场景,ContentView() 显示主界面。简单理解:这个文件告诉系统启动一个包含 ContentView 的窗口。

掌握界面构建的基础模块

无论使用 SwiftUI 还是 Storyboard,都需要了解如何用基本控件(视图)搭建界面。以下基于 SwiftUI 演示常用组件。

布局容器:VStack、HStack 和 ZStack

  • VStack 垂直排列子视图。
  • HStack 水平排列子视图。
  • ZStack 层叠视图(从上到下)。 示例:
VStack {
    Text("上方文本")
    HStack {
        Image(systemName: "star.fill")
        Text("星级")
    }
}
.padding()

交互控件:Button、TextField 和 Slider

  • Button 响应用户点击:
Button("点我") {
    print("按钮被点击")
}
  • TextField 用于文本输入,需要绑定一个 @State 变量:
@State private var name: String = ""
...
TextField("输入姓名", text: $name)
    .textFieldStyle(RoundedBorderTextFieldStyle())
  • Slider 用于数值滑动:
@State private var progress: Double = 0.5
Slider(value: $progress, in: 0...1)

列表展示:List 与 ForEach

List 可以高效展示动态数据集合:

let fruits = ["苹果", "香蕉", "橘子"]
List(fruits, id: \.self) { fruit in
    Text(fruit)
}

管理界面状态:@State 与 @Binding

在 SwiftUI 中,数据是驱动界面更新的核心。最基础的状态管理是 @State

@State 属性包装器

当某个变量值变化时,所有使用该变量的视图都会自动刷新。

struct ContentView: View {
    @State private var counter = 0

    var body: some View {
        VStack {
            Text("计数: \(counter)")
                .font(.title)
            Button("增加") {
                counter += 1
            }
        }
    }
}

每次点击按钮,counter 改变,文本自动更新。

父子视图共享状态:@Binding

如果需要将状态传递到子视图,让子视图也能修改,使用 @Binding

struct CounterView: View {
    @Binding var count: Int
    var body: some View {
        Button("子视图中增加") {
            count += 1
        }
    }
}
// 在父视图中调用
CounterView(count: $counter)

处理应用的生命周期

了解应用从启动到终止的各个阶段,能帮助你合理分配资源和保存数据。

  • Not Running:应用未启动或被系统终结。
  • Inactive:进入前台但无法接收事件(例如来电时)。
  • Active:在前台正常运行,可交互。
  • Background:进入后台,但仍可执行短暂任务。
  • Suspended:后台不执行代码,内存可能被释放。

在 SwiftUI App 中,可以使用环境值 scenePhase 监听场景状态:

@Environment(\.scenePhase) var scenePhase

.onChange(of: scenePhase) { newPhase in
    if newPhase == .active {
        print("应用激活")
    } else if newPhase == .background {
        print("进入后台")
        // 保存关键数据
    }
}