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("进入后台")
// 保存关键数据
}
}