Сделать анимацию касания элемента внутри 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
Ответить

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

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

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

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

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