Skip to main content
LanguageTiếng Việt
Kỹ thuậtđọc 5 phúttháng 10 năm 2026

Hoạt ảnh mùa xuân hoạt động như thế nào trong SwiftUI?

Câu trả lời ngắn

Trong SwiftUI, bạn thêm một lò xo bằng .animation(.spring) hoặc withAnimation(.spring). Kể từ iOS 17, các cài đặt chính là thời lượng và độ nảy, đồng thời có các cài đặt trước: .smooth (không bị trả lại), .snappy (một chút) và .bouncy (nhiều hơn). Mã cũ hơn sử dụng phản hồi và giảm xócFraction. Lò xo SwiftUI giữ nguyên tốc độ khi hoạt ảnh mới làm gián đoạn chúng, điều này khiến các cử chỉ trở nên tự nhiên.

Điểm chính

  • Sử dụng withAnimation(.spring) để thay đổi trạng thái hoặc .animation(.spring, value:) trên chế độ xem
  • iOS 17+: .spring(duration:bounce:) cộng với các cài đặt trước .smooth, .snappy và .bouncy
  • API cũ hơn: .spring(response:dampingFraction:blendDuration:)
  • Lò xo là kiểu hoạt ảnh mặc định của SwiftUI kể từ iOS 17
  • Lò xo ngắt quãng giữ nguyên vận tốc nên cử chỉ được thực hiện mượt mà

SwiftUI tạo hiệu ứng thay đổi trạng thái. Khi một giá trị như isExpanded thay đổi bên trong withAnimation(.spring), mọi chế độ xem phụ thuộc vào nó sẽ chuyển sang bố cục mới bằng cách sử dụng lò xo.

Trong iOS 17 trở lên, cách đơn giản nhất để mô tả một lò xo là có hai giá trị: thời lượng, khoảng thời gian cần thiết để ổn định và độ nảy, mức độ vượt quá. Độ nảy bằng 0 mang lại chuyển động mượt mà không bị vọt lố; giá trị cao hơn thêm độ nảy. Apple cũng cung cấp các cài đặt trước: .smooth, .snappy và .bouncy.

Mã cũ hơn sử dụng .spring(response:dampingFraction:). Phản hồi tương tự như thời lượng và phần giảm chấn là 1 có nghĩa là không bị trả lại trong khi các giá trị thấp hơn sẽ tăng thêm số lần thoát. Cả hai hình thức đều mô tả cùng một lò xo vật lý.

Ưu điểm lớn của lò xo là sự gián đoạn. Nếu người dùng chạm lại hoặc cử chỉ kéo kết thúc ở giữa hoạt ảnh, lò xo mới sẽ bắt đầu từ vị trí và vận tốc hiện tại, do đó không có bước nhảy. Đối với cử chỉ kéo, hãy truyền vận tốc của cử chỉ khi người dùng thả ra để phần tử tiếp tục đi theo hướng nó được ném.

Nếu thành phần tương tự cũng cần chạy trên web hoặc Android, việc giữ các giá trị mùa xuân dưới dạng mã thông báo chuyển động được chia sẻ sẽ hữu ích. ExodeUI do chúng tôi tạo ra có thời gian chạy SwiftUI, do đó, một thành phần được thiết kế với các lò xo của nó có thể phát trong SwiftUI và trên các nền tảng khác.

Câu hỏi thường gặp

Hoạt ảnh mặc định trong SwiftUI là gì?

Kể từ iOS 17, hình ảnh động mặc định là lò xo mượt mà.

Sự khác biệt giữa .snappy và .bouncy là gì?

.snappy ổn định nhanh chóng với độ vọt lố nhỏ; .bouncy vượt quá nhiều hơn. .smooth không có độ vọt lố.

Làm cách nào để chuyển đổi phản hồi và giảm xócFraction thành thời lượng và số lần thoát?

Phản hồi gần như ánh xạ tới thời lượng. Phần giảm chấn của 1 là độ nảy 0; phân số giảm chấn thấp hơn có nghĩa là độ nảy cao hơn.

Làm cách nào để thêm vận tốc từ cử chỉ kéo?

Đọc vận tốc khi lực kéo kết thúc và sử dụng lò xo nội suy hoặc API lò xo mới hơn chấp nhận vận tốc ban đầu.

Hướng dẫn và ví dụ liên quan

Điều chỉnh lò xo trước khi bạn viết mã

Kéo thanh trượt, xem chuyển động và sao chép các giá trị lò xo cho SwiftUI, CSS và các nền tảng khác.

Mở máy phát điện lò xo
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →