0Pricing
Swift Academy · Урок

Неявные и явные анимации

Используйте модификатор .animation() или блок withAnimation {} в зависимости от задачи.

«Неявные и явные анимации» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Два стиля анимации

SwiftUI поддерживает неявные анимации (модификатор .animation) и явные анимации (замыкание withAnimation).

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

Неявная анимация с .animation

Добавление .animation(_:value:) к представлению запускает его анимацию при каждом изменении связанного значения.

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

Запуск неявной анимации

Любое изменение состояния, влияющее на представление, автоматически запускает заданную для него неявную анимацию.

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

Явная анимация с withAnimation

withAnimation оборачивает изменение состояния и одновременно анимирует все получившиеся изменения представления.

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

Анимация нескольких свойств

withAnimation удобнее, когда нужно синхронно анимировать несколько изменений состояния как одну транзакцию.

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

Типы анимации

Swift предоставляет анимации spring, easeIn, easeOut, easeInOut, linear и анимации с пользовательской кривой времени.

.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)

Отключение анимации

Передайте .animation(.none, value:) или оберните изменения в withAnimation(nil), чтобы выборочно отключить анимацию.

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

Приоритет анимации

Явный вызов withAnimation имеет приоритет над неявными модификаторами .animation во вложенных представлениях.

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

Повторяющиеся анимации

Используйте .repeatForever или .repeatCount для циклических анимаций, например эффектов пульсации.

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

Задержка и скорость

Сочетайте анимации с модификаторами .delay и .speed значения анимации.

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

Выбор между неявной и явной анимацией

Используйте неявную анимацию для анимации одного представления, связанной с одним значением; явную — для координации нескольких свойств или представлений.

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

Быстрая проверка

Какой подход лучше всего координирует одновременную анимацию нескольких свойств состояния?

Итоги урока

Неявные анимации (.animation(_:value:)) автоматически реагируют на изменения значения одного представления. Явные анимации (withAnimation {}) координируют несколько изменений. Для создания сложных эффектов объединяйте их с .delay, .speed и .repeatForever.

Часто задаваемые вопросы

Урок «Неявные и явные анимации» бесплатный?

Да — полный текст урока «Неявные и явные анимации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Неявные и явные анимации»?

Используйте модификатор .animation() или блок withAnimation {} в зависимости от задачи. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Неявные и явные анимации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Неявные и явные анимации
  2. matchedGeometryEffect для эффектных переходов
  3. Пользовательские AnimatableModifier и Animatable
  4. TimelineView и Canvas для высокопроизводительной отрисовки
← Назад к Swift Academy