Сделать анимацию касания элемента внутри ScrollViewIOS

Программируем под IOS
Anonymous
Сделать анимацию касания элемента внутри ScrollView

Сообщение Anonymous »

Я хочу, чтобы элементы внутри LazyVGrid имели модификатор касания (изменяли их масштаб) и в то же время могли прокручиваться. Я настроил модификатор тапа для каждого элемента и он действительно работает, но пропадает возможность прокручивать контент, но если я отключу свой собственный эффект тапа, то прокрутка снова станет доступна. Как сделать эффект клика и возможность прокручивать контент одновременно?
struct ScaledTappable: ViewModifier {

@State var state = false
var tapHandler: () -> Void

func body(content: Content) -> some View {
content
.scaleEffect(state ? 0.9 : 1)
.gesture(
DragGesture(minimumDistance: 0)
.onChanged({ value in
withAnimation(.smooth(duration: 0.2)) {
state = true
}
})
.onEnded({ value in
withAnimation(.bouncy(duration: 0.5)) {
state = false
tapHandler()
}
})
)
}
}

extension View {

@ViewBuilder
func tappable(enabled: Bool = true, onTap: @escaping () -> Void) -> some View {
if enabled {
self.modifier(ScaledTappable(tapHandler: onTap))
} else {
self.opacity(0.3)
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... scrollview

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