Swiftui MatchededeDegeTryEffect «Несколько вставленных представлений в сопоставленной паре группы геометрии предупрежденIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui MatchededeDegeTryEffect «Несколько вставленных представлений в сопоставленной паре группы геометрии предупрежден

Сообщение Anonymous »

I would like to achieve a slide animation of an underline moving from one tab to another when the user selects a different one
Изображение

I'm using matchedGeometryEffect as follows:

Код: Выделить всё

       HStack(spacing: 15) {
ForEach(categories, id: \.self) { category in
let isSelected = selectedVal == category
Button {
withAnimation {
selectedVal = category
}
} label: {
VStack(spacing: 4) {
Text(category)
.frame(width: 100)
if isSelected {
RoundedRectangle(cornerRadius: 5)
.frame(width: 50, height: 2)
.matchedGeometryEffect(id: "Category", in: animation, isSource: isSelected)
}
}
}
}
}
Этот подход работает с предупреждением о нескольких вставленных представлениях в паре группируемых геометрии (First: «Category», Second: Swiftui.namespace.id (id: 10)) иметь Issource: True, результаты не определены. исчезает: < /p>

Код: Выделить всё

      HStack(spacing: 15) {
ForEach(categories, id: \.self) { category in
let isSelected = selectedVal == category
VStack(spacing: 4) {
Button(category) {
withAnimation {
selectedVal = category
}
}

if isSelected {
RoundedRectangle(cornerRadius: 5)
.frame(width: 50, height: 2)
.matchedGeometryEffect(id: "Category", in: animation, isSource: isSelected)
}
}
}
}
Я подозреваю, что это связано с кнопкой не удалена из иерархии представления в первом решении, и поэтому все еще содержит ссылку на RoundeDrectangle , которая смущает MatchEdgeMetry, так как вы не можете иметь источник «видимый». Есть ли объяснение того, почему я получаю предупреждение в первом сценарии?

Подробнее здесь: https://stackoverflow.com/questions/649 ... etry-group
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»