[Video Summary] Ch. 4.6 Flip a Text View & More using withAnimation in SwiftUI (2025)
Mô tả nhanh
Video này trình bày cách tạo hiệu ứng lật chữ (text flip animation) trong SwiftUI bằng cách sử dụng withAnimation kết hợp với rotation3DEffect. Ngoài ra, video cũng giới thiệu một số kỹ thuật animation khác như scale và fade.
Video
Mô tả chi tiết
Video này hướng dẫn cách tạo hiệu ứng lật chữ (text flip animation) trong SwiftUI bằng cách sử dụng withAnimation và rotation3DEffect, đồng thời giới thiệu thêm các kỹ thuật animation khác như scale và fade.
Dưới đây là các bước chi tiết để thực hiện:
1. Tạo hiệu ứng fade đơn giản (Basic Animation):
- Sử dụng
.animationmodifier để tạo hiệu ứng fade in cho text view khi giá trị thay đổi. - Sử dụng tham số
valueđể chỉ định biến nào sẽ kích hoạt animation (ví dụ:resultMessage). - Vấn đề: Nếu giá trị không thay đổi (ví dụ: tung xúc xắc ra cùng một số), animation sẽ không chạy.
2. Tạo animation trigger:
- Tạo một biến
@Statemới kiểuBool(ví dụ:animationTrigger) và khởi tạo giá trị ban đầu làfalse. - Trong action của button, sử dụng
.toggle()để đảo ngược giá trị củaanimationTriggermỗi khi button được nhấn. Điều này đảm bảo animation luôn chạy, ngay cả khi giá trị không thay đổi. - Thay đổi giá trị
valuetrong.animationmodifier thànhanimationTrigger.
3. Tạo hiệu ứng pulse (sử dụng onChange modifier và withAnimation):
- Xóa
.animationmodifier cũ. - Sử dụng
.onChangemodifier để theo dõi sự thay đổi củaanimationTrigger. - Tạo một biến
@Statekhác kiểuBool(ví dụ:isDoneAnimating) và khởi tạo làtrue(vì khi bắt đầu app thì chưa có animation). - Trong block của
.onChange, đặtisDoneAnimatingthànhfalse(bắt đầu animation). - Sử dụng
withAnimationđể tạo animation:- Đặt
isDoneAnimatingthànhtruebên trongwithAnimation. - Sử dụng
.scaleEffectvà.opacitymodifiers với ternary operator để thay đổi kích thước và độ trong suốt của text view dựa trên giá trị củaisDoneAnimating. - Sử dụng
.springanimation để tạo hiệu ứng nảy.
- Đặt
4. Tạo hiệu ứng lật (Flip Effect):
- Comment hoặc xóa các modifier
.scaleEffectvà.opacityđã tạo ở bước trước. - Sử dụng modifier
.rotation3DEffect:angle: Sử dụng ternary operator để xác định góc quay dựa trênisDoneAnimating. Nếutrue, quay 360 độ; nếufalse, quay 0 độ.axis: Đặt trục X là 1, trục Y và Z là 0 để xoay quanh trục ngang.
5. Sử dụng Interpolating Spring:
- Thay thế
.springbằng.interpolatingSpring. - Sử dụng các tham số như
durationvàbounceđể điều chỉnh hiệu ứng nảy.
<Lời chúc>
Chúc bạn thành công với những animation SwiftUI tuyệt vời!
