0Pricing
Swift Academy · Lección

Animaciones implícitas frente a explícitas

Utilice el modificador .animation() o el bloque withAnimation {} según el caso de uso.

Animaciones implícitas frente a explícitas es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Dos estilos de animación

SwiftUI admite animaciones implícitas (el modificador .animation) y animaciones explícitas (el cierre withAnimation).

struct Demo: View {
  @State private var scale = 1.0
  var body: some View {
    Circle().scaleEffect(scale)
  }
}

Animación implícita con .animation

Al asociar .animation(_:value:) a una vista, esta se anima cada vez que cambia el valor vinculado.

Circle()
  .scaleEffect(scale)
  .animation(.easeInOut(duration: 0.3), value: scale)

Activación de una animación implícita

Cualquier cambio de estado que afecte a la vista activa automáticamente la animación implícita definida en ella.

Button("Grow") {
  scale = 2.0  // .animation fires automatically
}

Animación explícita con withAnimation

withAnimation envuelve una mutación de estado y anima simultáneamente todos los cambios resultantes de la vista.

Button("Animate") {
  withAnimation(.spring()) {
    scale = 2.0
    offset = 50
  }
}

Animación de varias propiedades

withAnimation es mejor cuando desea animar varios cambios de estado sincronizados como una sola transacción.

withAnimation(.easeOut(duration: 0.5)) {
  isExpanded = true
  rotation = 90
  opacity = 0.5
}

Tipos de animación

Swift proporciona animaciones spring, easeIn, easeOut, easeInOut, linear y animaciones con curvas de temporización personalizadas.

.spring(response: 0.4, dampingFraction: 0.6)
.easeInOut(duration: 0.3)
.linear(duration: 0.5)
.timingCurve(0.2, 0.8, 0.2, 1.0, duration: 0.4)

Desactivación de animaciones

Pase .animation(.none, value:) o envuelva las mutaciones en withAnimation(nil) para desactivar las animaciones de forma selectiva.

Circle()
  .scaleEffect(scale)
  .animation(.none, value: scale)  // no animation

Prioridad de las animaciones

El withAnimation explícito tiene prioridad sobre los modificadores .animation implícitos de las vistas secundarias.

withAnimation(.linear) {
  value = true  // linear wins over any .animation on subviews
}

Animaciones repetitivas

Use .repeatForever o .repeatCount para crear animaciones en bucle, como efectos de pulsación.

.animation(
  .easeInOut(duration: 0.8).repeatForever(autoreverses: true),
  value: pulsing
)

Retraso y velocidad

Combine animaciones con los modificadores .delay y .speed aplicados al valor de animación.

.animation(.spring().delay(0.2).speed(1.5), value: flag)

Elección entre animaciones implícitas y explícitas

Use animaciones implícitas para animaciones de una sola vista vinculadas a un valor; use animaciones explícitas cuando coordine varias propiedades o vistas.

// Implicit: simple, single view
.animation(.easeIn, value: isVisible)
// Explicit: multi-property or cross-view
withAnimation { a = 1; b = 2 }

Comprobación rápida

¿Qué enfoque coordina mejor la animación simultánea de varias propiedades de estado?

Resumen de la lección

Las animaciones implícitas (.animation(_:value:)) reaccionan automáticamente a los cambios de valor en una sola vista. Las animaciones explícitas (withAnimation {}) coordinan varias mutaciones. Combínelas con .delay, .speed y .repeatForever para crear efectos complejos.

Preguntas frecuentes

¿La lección «Animaciones implícitas frente a explícitas» es gratis?

Sí — el texto completo de «Animaciones implícitas frente a explícitas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Animaciones implícitas frente a explícitas»?

Utilice el modificador .animation() o el bloque withAnimation {} según el caso de uso. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Animaciones implícitas frente a explícitas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Animaciones implícitas frente a explícitas
  2. matchedGeometryEffect para transiciones hero
  3. AnimatableModifier y Animatable personalizados
  4. TimelineView y Canvas para dibujo de alto rendimiento
← Volver a Swift Academy