gpt4 book ai didi

reactjs - 拉动 ScrollView 以显示 View - React Native

转载 作者:行者123 更新时间:2023-12-03 13:46:53 30 4
gpt4 key购买 nike

我正在尝试在 React Native 中构建类似于 IMessage 和 WhatsApp 标题的内容,用户可以向下拉以显示标题中的搜索栏。

pullToRevealView

我已经能够向下拉以显示隐藏的输入,但由于 ScrollView 的 y 值在拉动时变为负数,因此它会弹回到 y = 0 并防止输入粘在顶部。我尝试使用 translateYscaleY 来显示隐藏的输入。

class List extends Component {

scrollY = new Animated.Value(0)

render() {
const translateY = this.props.scrollY.interpolate({
inputRange: [ -50, 0 ],
outputRange: [ 50, 0 ],
extrapolate: 'clamp',
})

return (
<>
<Animated.View style={[
styles.container,
{ transform: [ { translateY } ] },
]}>
<Input />
</Animated.View>

<Animated.ScrollView
onScroll={Animated.event(
[ { nativeEvent: { contentOffset: { y: this.scrollY } } } ],
{ useNativeDriver: true }
)}
scrollEventThrottle={16}
>
{...}
</Animated.ScrollView>
</>
)
}
}

const styles = StyleSheet.create({
container: {
backgroundColor: colors.white,
width: windowWidth,
height: 50,
position: 'absolute',
top: -50,
zIndex: -99,
},
});

我发现这篇 Stack Overflow 帖子很有引用值(value),但它是 IOS 特定的 Pull down to show view

最佳答案

我通过使用 contentOffset 解决了这个问题,并且没有任何动画。我需要确保 ScrollView 至少是手机 windowHeight 的大小,然后使用 contentOffset 推送 Scrollview 的初始 y 值到标题的大小

      <ScrollView
ListHeaderComponent={() => (
<Header headerHeight={hiddenHeaderHeight} />
)}
contentContainerStyle={{ minHeight: windowHeight }}
contentOffset={{ y: hiddenHeaderHeight }}
...

此解决方案也适用于 Flatlist

需要注意的一点是 contentOffsetios 特定的 prop

关于reactjs - 拉动 ScrollView 以显示 View - React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716264/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com