Skip to content

Instantly share code, notes, and snippets.

@keetsta
Created November 28, 2023 12:42
Show Gist options
  • Save keetsta/8feeceab553fb3d47e23f5c9e928d9f4 to your computer and use it in GitHub Desktop.
Save keetsta/8feeceab553fb3d47e23f5c9e928d9f4 to your computer and use it in GitHub Desktop.
SwiftUI infinite heart carousel animation
import SwiftUI
struct ScrollHeartViewComponent: View {
@State var isAnimated = false
var body: some View {
LazyHStack {
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(0.5))
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(0.5))
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(0.5))
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(isAnimated ? 0.5 : 1))
.scaleEffect(isAnimated ? 1 : 1.3)
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(isAnimated ? 1 : 0.5))
.scaleEffect(isAnimated ? 1.3 : 1)
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(0.5))
Image(systemName: "heart")
.font(.system(size: 60))
.foregroundStyle(.red.opacity(0.5))
}
.offset(x: isAnimated ? -81 : 0)
.onAppear {
withAnimation(.easeInOut.repeatForever(autoreverses: false).speed(0.25)) {
isAnimated = true
}
}
}
}
#Preview {
ScrollHeartViewComponent()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment