Нежелательная бодрящая анимация в Scrollview/Grid после iOS 18 NavigationTransition ZoomIOS

Программируем под IOS
Ответить
Anonymous
 Нежелательная бодрящая анимация в Scrollview/Grid после iOS 18 NavigationTransition Zoom

Сообщение Anonymous »

Я реализую новую функцию iOS 18 .navigationTransition(.zoom) с сеткой элементов, которые открываются в полноэкранном режиме. Все работает отлично, но после закрытия подробного представления у меня возникли две проблемы:
Проблема 1: прыгающая анимация при прокрутке
Когда я закрываю подробное представление и затем прокручиваю, соответствующий элемент имеет нежелательную упругую/пружинящую анимацию. Я хотел бы полностью удалить эту анимацию.
Проблема 2. Добавление углового радиуса обрезает вид
Если я добавляю угловой радиус к элементам сетки (

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

.cornerRadius(12)
), представление обрезается при прокрутке после закрытия подробного представления.
эффект упругости:
Изображение

эффект обрезки:
Изображение

В моем коде я использую изображения и более сложные представления, здесь это просто красные прямоугольники.
Вот мой минимальный воспроизводимый пример:

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

  import SwiftUI

struct TestItem: Identifiable {
let id: Int
}

@Observable
final class TestViewModel {
var selectedItem: TestItem?
var transitionID: String?

let items = (0.. some View {
Button {
viewModel.selectItem(item)
} label: {
Rectangle()
.fill(Color.red)
.frame(height: 150)
}
.matchedTransitionSource(id: "item-\(item.id)", in: namespace)
}

private func detailView(for item: TestItem) -> some View {
ZStack {
Rectangle()
.fill(Color.red)
.ignoresSafeArea()

VStack {
HStack {
Spacer()
Button("Close") {
viewModel.dismiss()
}
.padding()
}
Spacer()
}
}
}
}
Шаги для воспроизведения:
  • Нажмите на любой красный прямоугольник.
  • Закройте подробное представление.
  • Прокрутите сетку → ранее выбранный элемент подпрыгивает.
  • Откомментируйте .cornerRadius(12) и повторите → Углы обрезаются во время прокрутка
Ожидаемое поведение: нет анимации при прокрутке после закрытия, а радиус угла должен оставаться неизменным.
Среда: iOS 26.0, Xcode 26.0
Кто-нибудь сталкивался с этим? Есть ли способ отключить анимацию упругости или исправить отсечение радиуса угла?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ansition-z
Ответить

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

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

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

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

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