天然 reactjs :淡入淡出滚动视图底部

dldeef67  于 2023-01-27  发布在  React
关注(0)|答案(3)|浏览(185)

我正在尝试实现一个ScrollView列表,它可以淡出列表底部的项目。这可以通过监控滚动位置,确定每个项目的布局,然后为每个项目添加不透明度来实现~即使这样,它也不会实现平滑的淡出,因为每个项目都有一个固定的不透明度。
我想知道是否有一个更优雅和清洁的方式来实现这一点?

hfyxw5xn

hfyxw5xn1#

1.使用expo中的LinearGradient渲染平滑淡出。
1.如果ScrollView有可触摸的项目,请在LinearGradient中添加属性"pointerEvents = {'none '}"。它可以绕过ScrollView的触摸事件。

import {LinearGradient} from 'expo';

<View style={{width:100, height:100, backgroundColor:'#fff'}}>
  <ScrollView />
  <LinearGradient
    style={{position:'absolute', bottom:0, width:100, height:20}}
    colors={['rgba(255, 255, 255, 0.1)', 'rgba(255, 255, 255, 0.8)']}
    pointerEvents={'none'}
  />
</View>

编辑:
1.如果是动态图像,也许你可以试试图像父级的backgroundColor。下面的例子是黑色的,所以使用黑色的LinearGradient。

<View style={{flex:1, backgroundColor:'#000'}}>
  <ImageBackground
    style={{flex:1}}
    source={{uri:'https://images.pexels.com/photos/67636/rose-blue-flower-rose-blooms-67636.jpeg?cs=srgb&dl=beauty-bloom-blue-67636.jpg&fm=jpg'}}
  >
    <LinearGradient
      style={{flex:1}}
      locations={[0.7, 0.9, 1]}
      colors={['rgba(0, 0, 0, 0)', 'rgba(0, 0, 0, 0.1)', 'rgba(0, 0, 0, 0.5)']}
      pointerEvents={'none'}
    />
  </ImageBackground>
</View>
4dc9hkyq

4dc9hkyq2#

ScrollView中有实现渐变效果的软件包。
rn-faded-scrollview确实工作得很好。

<RNFadedScrollView
    allowStartFade={true}
    allowEndFade={true}
    bounces={false}
    horizontal={true}
     >
 </RNFadedScrollView>

希望这个有用。

4dbbbstv

4dbbbstv3#

您可以使用“淡入淡出边长”属性(仅限Android)https://reactnative.dev/docs/0.63/scrollview#fadingedgelength

相关问题