[Video Summary] Ch. 6.7 Simple Circular Progress View in SwiftUI (2024)
Mô tả nhanh
Video này hướng dẫn cách sử dụng và tùy chỉnh ProgressView
cơ bản trong SwiftUI, bao gồm cách thay đổi màu sắc, kích thước và điều khiển hiển thị của nó. Video cũng trình bày cách tích hợp nó vào một ứng dụng thực tế để hiển thị trạng thái tải dữ liệu.
Video
Mô tả chi tiết
Video này trình bày cách sử dụng ProgressView
trong SwiftUI để hiển thị tiến trình tải dữ liệu. Đầu tiên, video tạo một ứng dụng nhỏ để thử nghiệm và tùy chỉnh ProgressView
, sau đó tích hợp nó vào ứng dụng "Catch them all" để hiển thị khi dữ liệu đang được tải.
Các bước thực hiện chính:
-
Tạo dự án thử nghiệm:
- Tạo một project SwiftUI mới có tên "progressView".
- Xóa nội dung mặc định trong
VStack
. - Thêm
ProgressView()
, đây là một spinner cơ bản màu xám. - Sử dụng
.tint(.red)
để thay đổi màu spinner thành đỏ. - Sử dụng
.scaleEffect(4)
để tăng kích thước spinner lên gấp 4 lần.
-
Điều khiển hiển thị
ProgressView
:- Tạo một biến trạng thái
@State private var showProgressView = false
để kiểm soát việc hiển thịProgressView
. - Thêm một
Button
để toggle giá trị củashowProgressView
. - Sử dụng
if showProgressView { ... }
để hiển thịProgressView
chỉ khishowProgressView
làtrue
.
- Tạo một biến trạng thái
-
Tích hợp vào ứng dụng "Catch them all":
- Sử dụng
ZStack
để hiển thịProgressView
ở trên cùng củaList
. - Thêm
ProgressView()
sauList
trongZStack
. - Tùy chỉnh màu sắc và kích thước của
ProgressView
. - Thêm biến
isLoading
kiểuBool
vào class Creatures để theo dõi trạng thái tải dữ liệu (false
khi không tải,true
khi đang tải). - Trong hàm
getData()
củaCreatures
:- Set
isLoading
thànhtrue
khi bắt đầu tải dữ liệu.- Set
isLoading
thànhfalse
khi tải thành công hoặc khi có lỗi.
- Set
- Set
- Trong CreaturesListView, bọc
ProgressView
trong mộtif
statement, chỉ hiển thị khicreatures.isLoading
làtrue
.
- Sử dụng
Kết quả là ProgressView
sẽ chỉ hiển thị khi ứng dụng đang tải dữ liệu, và sẽ ẩn đi khi quá trình tải hoàn tất hoặc có lỗi xảy ra.
Chúc bạn có thêm một kỹ năng hữu ích với SwiftUI!