struct ExampleView: View {

Изменение строки одного Text не создаёт автоматически scale-переход между двумя представлениями. Для замены через transition нужна смена identity или условные ветви.

Короткий ответ

Что ответить на собеседовании

Изменение строки одного Text не создаёт автоматически scale-переход между двумя представлениями. Для замены через transition нужна смена identity или условные ветви.

Подробный разбор

Ответ с пояснениями

Условие

struct ExampleView: View {

@State var isVariant1 = true

var body: some View {
    VStack {
        Toggle("Use Variant 1", isOn: $isVariant1.animation(.linear))
        Text(isVariant1 ? "Variant 1" : "Variant 2")
    }
    .padding()
}

}

Variant1 -> scale -> 1 -> 0 Variant2 -> scale -> 0

Ответ

Изменение строки одного Text не создаёт автоматически scale-переход между двумя представлениями. Для замены через transition нужна смена identity или условные ветви.

Если требуется уменьшение старого текста и появление нового с масштабированием, можно задать разную identity:

struct ExampleView: View {
    @State private var isVariant1 = true

    var body: some View {
        VStack {
            Toggle("Use Variant 1", isOn: $isVariant1.animation(.linear))
            ZStack {
                Text(isVariant1 ? "Variant 1" : "Variant 2")
                    .id(isVariant1)
                    .transition(.scale)
            }
        }
        .padding()
    }
}

Нужен import SwiftUI. Это одновременные выход и вход, не два строго последовательных этапа. Для последовательного сценария требуется отдельное состояние фаз. В исходнике animation на binding задаёт транзакцию, но не придумывает scale-анимацию для произвольной смены текста.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее