да не в этом дело, я не управляю анимацией, я не могу проскролив в самый низ, показать снова хедер, что бы его увидеть, нужно скролить в самый верх
onScroll возвращает вам в том числе и contentSize
у Animated.Event есть такая штука, как listener (имеется ввиду Animated из коробки react-native).
в этот listener, если не ошибаюсь, передаются все значения, которые передаются в обычный onScroll метод
Зная contentSize и contentOffset по y - вы можете определить - достиг ли пользователь конца списка. Определив это - вы просто делаете для вашего position.setValue(0) - и хедер будет отображен.
По поводу интерполяции - inputRange содержит два значения в вашем случае - стартовая точка (0 - хедер показывается) и конечная точка (50 - хедер прячется).
Переключение между этими двумя точками будет происходить автоматически при использовании Animated.Event. При скролле ваш animated.value (position в примере) будет автоматически переключаться на новое значение, переданное из объекта прокинутого onScroll событием.
В строке, где вы описываете [{ nativeEvent: { contentOffset: { y: position }}}], вы указываете, что значение, хранящееся в event.nativeEvent.contentOffset.y должно быть проставлено в animated.value (position в примере) объект. По сути - это замещает Animated.timing(...).start(). Все реализовано автоматом.