[Video Summary] Ch. 3.2 using scaleEffect, spring, and withAnimation to animate Bip The Guy in SwiftUI
Mô tả nhanh
Video này hướng dẫn cách sử dụng scaleEffect
, spring
và withAnimation
để tạo hiệu ứng nảy cho hình ảnh khi chạm vào trong SwiftUI.
Video
Mô tả chi tiết
Video này hướng dẫn cách sử dụng scaleEffect
, spring
và withAnimation
để tạo hiệu ứng nảy cho hình ảnh khi chạm vào trong SwiftUI.
Các bước thực hiện:
- Tạo biến
scale
:- Khai báo biến
@State private var scale = 1.0
để lưu giá trị tỉ lệ (scale) của hình ảnh. Ban đầu, scale bằng 1.0 (kích thước gốc).
- Khai báo biến
- Sử dụng
scaleEffect
modifier:- Thêm modifier
.scaleEffect(scale)
vàoImage
view. Modifier này cho phép thay đổi kích thước của view bằng cách nhân với giá trịscale
.
- Thêm modifier
- Thử nghiệm với
scaleEffect
:- Trong
onTapGesture
, thử tăng giá trịscale
lên 0.1 mỗi khi chạm vào. Điều này làm hình ảnh lớn dần lên, nhưng hiệu ứng chưa được mượt mà.
- Trong
- Sử dụng
animation
modifier:- Thêm modifier
.animation(.default, value: scale)
sauonTapGesture
. Điều này giúp tạo animation khi giá trịscale
thay đổi. Tuy nhiên, hiệu ứng mặc định không phải là nảy.
- Thêm modifier
- Sử dụng animation
.spring()
:- Thay
.default
bằng.spring()
trong animation modifier để có hiệu ứng nảy. Tuy nhiên, mặc định hiệu ứng nảy có vẻ chưa rõ ràng.
- Thay
- Tùy chỉnh animation
.spring()
:- Thêm các tham số
response
vàdampingFraction
vào.spring()
để tùy chỉnh tốc độ và độ nảy của animation.response
: Tốc độ của spring (giá trị càng lớn, tốc độ càng chậm).dampingFraction
: Độ nảy của spring (giá trị càng nhỏ, độ nảy càng cao).
- Thử nghiệm với các giá trị khác nhau để đạt được hiệu ứng mong muốn.
- Thêm các tham số
- Sử dụng
withAnimation
:-
Xóa animation modifier
.animation
-
Tạo biến
@State private var animateImage = true
để theo dõi trạng thái hình ảnh (scale 1.0 hoặc 0.9) -
Sửa đổi
scaleEffect
với toán tử 3 ngôi:.scaleEffect(animateImage ? 1.0 : 0.9)
. NếuanimateImage
là true, scale là 1.0 (100%), ngược lại là 0.9 (90%). -
Trong
onTapGesture
,- Đặt
animateImage = false
để thu nhỏ hình ảnh xuống 90% ngay lập tức. - Sử dụng
withAnimation
với animation.spring()
để đưa hình trở lại 100% kích thước bằng animation nảy.- Bên trong
withAnimation
đặtanimateImage = true;
.
- Bên trong
- Đặt
-
Thử nghiệm và cảm nhận sự thay đổi.
Giải thích: Khi chạm vào hình, hình ảnh sẽ thu nhỏ về 90% ngay lập tức, sau đó
withAnimation
sẽ thực hiện chuyển đổi về 100% với hiệu ứng nảy, tạo hiệu ứng đẹp mắt.
-
Chúc bạn luôn học tập hiệu quả!