react-native吸顶效果

勤做笔记,方便自己,帮助他人。

这是一个很笨的实现方式 但是好在也能实现。(头部的颜色本来是渐变色 现在是因为gif的问题变成条纹了)


b.gif

核心代码 在滚动的时候去设置zIndex

_onScroll(event) {
      let y = event.nativeEvent.contentOffset.y;
      if (y < 100) {
          if (this.state.sIndex === 9) {
              this.setState({
                  sIndex : 1,   // 开始被隐藏的标签栏
                  hIndex : 9,   // 开始时显示标签栏
              });
          }
      } else {
          if (this.state.sIndex === 1) {
              this.setState({
                  sIndex : 9,
                  hIndex : 1,
              });
          }
      }
  }

我的实现过程是 用绝对定位在顶部多写一个的标签栏默认zIndex:1 然后再滚动到一定程度的时候 把标签栏的zIndex设置得比其他的大zIndex:9(其中 LinearGradient 是渐变色View)

<LinearGradient
   ref={ref => this.navBar = ref}
   style={[ styles.header2, { zIndex : this.state.sIndex } ]}
   start={{ x : 0, y : 1 }}
   end={{ x : 1, y : 1 }}
   colors={[ '#FF9100', '#FF6500' ]}
>

  <ScrollView
       showsHorizontalScrollIndicator={false}
       style={styles.scrollView2}
       horizontal={true}
  >
         {
            list.map((item, i) =>
               <TouchableOpacity
                     onPress={() => this.setState({ select : item}) }
                      key={i}
                      style={[ styles.headerTag, select == item ? { borderBottomWidth : 2 } : '' ]}>
                      <MyText.BtnText text={item}/>
               </TouchableOpacity>
            )}
  </ScrollView>
</LinearGradient>

更多详细信息可以参考: https://www.jianshu.com/p/f767d05708ff

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,003评论 3 119
  • 2017年6月30日周五开部门会议,忽然发现这一年已经过半了。会议发言依然是由我开始,主要是对过去半年的工作总结及...
    向行阅读 368评论 3 7
  • 文/念在天涯 您住在山头 我住在山脚 您看春去秋来 我看花开花落 您盼冬去 我盼雁归 您默默守护 我深深怀念 或许...
    念在天涯阅读 147评论 7 19
  • 一格 文字:我为什么买彩票? 图:人形猫在彩票售票处 二格 文字:我仔细的想了想这个问题。不全是为了中大奖。因为概...
    落魄山知了猴阅读 228评论 0 0
  • 刚工作了一个小时,感觉好累,先掏出手机放松一下;无事可做,掏出手机看一下视频短片;上个厕所,带上厕所二宝:手机和纸...
    高分子的二货阅读 475评论 0 0