Как я могу решить проблему с эффектом затухания MatchedGeometryEffect в SwiftUI?

Я использую matchedGeometryEffect в своем коде, чтобы получить плавный переход, когда я его использую, все работает нормально, но цвет исчезает в процессе, и я хочу, чтобы цвет не исчезал, я просмотрел ту же проблему в старых вопросах и ответах, и я использовал подход отвечать, но все же мой переход имеет эффект затухания! Как я могу удалить эффект затухания там?

struct ContentView: View {
    
    @Namespace var namespaceOfCircle
    @State private var update: Bool = false
    
    var body: some View {

        VStack {
            
            if update {
                
                VStack {
                    
                    Circle()
                        .foregroundColor(Color.black)
                        .matchedGeometryEffect(id: "Circle", in: namespaceOfCircle)
                        .transition(.scale(scale: 1))
                        .frame(width: 100, height: 100)
                    
                    Spacer()

                }
                
            }
            else {
                
                VStack {
                    
                    Spacer()
                    
                    Circle()
                        .foregroundColor(Color.black)
                        .matchedGeometryEffect(id: "Circle", in: namespaceOfCircle)
                        .transition(.scale(scale: 1))
                        .frame(width: 300, height: 300)

                }
                
            }
            
        }
        .background(Button("update") { update.toggle() })
        .animation(.linear(duration: 5.0), value: update)
  
    }
}
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Важно место применяемых модификаторов, здесь вы вставляете/убираете не круг, а VStack, так что фикс переместить туда переход.

Протестировано с Xcode 13.3/iOS 15.4

demo

Основная часть это:

if update {
    VStack {
        Circle()
            .matchedGeometryEffect(id: "Circle", in: namespaceOfCircle)
            .frame(width: 100, height: 100)
        Spacer()
    }
    .transition(.scale(scale: 1))      // << here !!

Завершить выводы и код здесь

Другие вопросы по теме