[Video Summary] Ch. 2.1 Creating the WordGarden App Interface in SwiftUI (2025)
Mô tả nhanh
Video này trình bày cách tạo giao diện ứng dụng Word Garden trong SwiftUI. Tác giả hướng dẫn từng bước từ việc tạo dự án mới, thêm assets, đến việc xây dựng giao diện người dùng với các thành phần như Text, TextField, Button, Image và cách sử dụng State để điều khiển giao diện.
Video
Mô tả chi tiết
Video này hướng dẫn tạo giao diện ứng dụng Word Garden trong SwiftUI.
Các bước thực hiện:
-
Chuẩn bị Assets:
- Tải xuống các file assets (âm thanh, hình ảnh, icon) từ Google Drive.
- Kéo các thư mục "flower sounds" và "flower images" vào Asset Catalog trong Xcode.
- Kéo file ảnh "word Garden icon PNG" vào mục AppIcon.
- Kéo 3 ảnh launch screen vào Asset Catalog.
- Thiết lập ảnh launch screen bằng cách copy tên ảnh và paste vào mục Launch Screen trong phần Info của project.
-
Xây dựng giao diện người dùng:
- Xóa code mặc định trong
ContentView.swift. - Tạo một
VStacklớn bao ngoài để chứa toàn bộ giao diện. - Tạo phần hiển thị số liệu thống kê (words guessed, words missed, etc.):
- Tạo hai
VStacknhỏ, một căn trái (leading) và một căn phải (trailing), mỗi cái chứa haiTexthiển thị số liệu. - Đặt hai
VStacknày vào trong mộtHStackđể chúng nằm ngang, sử dụngSpacer()để đẩy chúng về hai phía. - Khai báo các biến
@Stateđể lưu trữ số liệu (ví dụ:wordsGuessed,wordsMissed,wordsToGuess). - Sử dụng string interpolation để hiển thị giá trị của các biến này trong các
Text.
- Tạo hai
- Tạo phần hiển thị trạng thái trò chơi:
- Thêm một
Spacer()để tạo khoảng cách. - Tạo một
Textđể hiển thị thông báo trạng thái trò chơi (ví dụ: "How many guesses to uncover the hidden word"). - Sử dụng modifier
font(.title)vàmultilineTextAlignment(.center)để định dạng văn bản. - Khai báo biến
@StategameStatusMessageđể lưu trữ thông báo trạng thái trò chơi.
- Thêm một
- Tạo phần hiển thị từ cần đoán:
- Thêm một
Spacer()để tạo khoảng cách. - Tạo một
Textđể hiển thị từ cần đoán (ban đầu hiển thị các dấu gạch dưới). - Sử dụng comment
//TODO:để đánh dấu vị trí cần thay đổi sau này (hiển thị từ thực tế). - Khai báo biến
@StatecurrentWordđể lưu trữ index của từ hiện tại trong mảng từ cần đoán.
- Thêm một
- Tạo phần nhập liệu và nút Guess a Letter:
- Tạo một
TextFieldđể người dùng nhập chữ cái đoán.- Sử dụng
TextFieldStyle(.roundedBorder)để tạo khung viền bo tròn. - Sử dụng
frame(width: 30)để giới hạn chiều rộng củaTextField. - Sử dụng
overlayvàRoundedRectangleđể tạo viền đậm hơn choTextField.
- Sử dụng
- Tạo một
Buttonvới label "Guess a Letter".- Sử dụng
buttonStyle(.bordered)vàtint(.mint)để định dạng nút.
- Sử dụng
- Đặt
TextFieldvàButtonvào trong mộtHStack.
- Tạo một
- Tạo phần hiển thị hình ảnh:
- Tạo một
Imageđể hiển thị hình ảnh (ví dụ: hoa). - Sử dụng
resizable()vàscaledToFit()để đảm bảo hình ảnh hiển thị đúng kích thước. - Sử dụng
ignoresSafeArea(.bottom)để hình ảnh tràn ra ngoài safe area ở phía dưới. - Khai báo biến
@StateimageNameđể lưu trữ tên hình ảnh.
- Tạo một
- Tạo padding và Conditional View:
- Thêm
padding(.horizontal)choHStacklớn nhất để tạo khoảng cách với lề. - Thêm
padding()choTexthiển thị trạng thái trò chơi. - Tạo một
Buttonkhác với label "Another Word" (ẩn/hiện tùy thuộc vào trạng thái trò chơi). - Sử dụng
if/elseđể ẩn/hiệnHStackchứaTextFieldvàButton"Guess a Letter" hoặcButton"Another Word" dựa trên biến@StateplayAgainHidden.
- Thêm
- Xóa code mặc định trong
-
Conditional View:
- Giải thích cách sử dụng biến
@StateplayAgainHiddenđể điều khiển hiển thị giữaHStackchứaTextFieldvàButton"Guess a Letter" vàButton"Another Word".
- Giải thích cách sử dụng biến
Chúc bạn thành công và tiếp tục khám phá thế giới lập trình iOS!