【问题标题】:React Native ScrollView Sticky View ElementReact Native ScrollView 粘滞视图元素
【发布时间】:2015-12-21 08:48:44
【问题描述】:

我试图让滚动视图中的元素始终保持在屏幕的左侧。有点像 Excel 中的数字行。它们在水平滚动时停留在左侧,但在垂直滚动时也会向下滚动。到目前为止,我尝试通过将 onscroll 元素连接到它来为元素设置动画。它确实有效,但感觉非常不稳定。它速度快但不流畅。几乎看起来元素在振动。

是否有任何其他技术可以在本机反应中获得所需的结果?这是我正在使用的重要行。

scrollPositionX: new Animated.Value(0),    

scrollEventThrottle={16}
onScroll={Animated.event([{nativeEvent: {contentOffset: {x: this.state.scrollPositionX}}}] )}

<Animated.View style={[styles.times, {
     transform: [{translateX: this.state.scrollPositionX}]
}]}>
   ...
</Animated.View>

【问题讨论】:

标签: react-native


【解决方案1】:

一种粗略的方法是在水平 ScrollView 之外渲染粘性列。只需确保您的粘性和非粘性细胞最终高度相同,以便所有内容都对齐。

如果您也想垂直滚动,请将它们都包裹在另一个 ScrollView 中。

<ScrollView>
  <View>
    // render the sticky cells
  </View>
  <ScrollView horizontal={true}>
    // render the non sticky cells
  </ScrollView>
</ScrollView>

问题在于,如果您有很多行,尤其是其中包含更复杂的组件,则会出现性能问题。

ListViews 更擅长处理大量数据,但我还没有找到一种方法来在这种情况下使用它们。粘性列和普通单元格都需要一个,如果不观看 onScroll 就无法使它们保持同步。

我希望有人有更好的方法来做到这一点。我也确实需要这个功能。

【讨论】:

  • 是的,你嵌套它的方式实际上是我的第一次尝试。坏事是您被锁定在一种或另一种滚动方式中。对角线是不可能的。我“修复”它的方式是将粘性元素(我实际上有两个,左侧和顶部)放在滚动视图之外,然后在它们上设置变换。这明显改善了它。出于某种原因,当它们在滚动视图中并进行转换时,确实使它们像我最初描述的那样变成了香蕉。仍然有大约 1 或 2 帧的延迟。只有同步的 UIScrollViews 才能 100% 做到这一点。
  • 顺便说一句,我将粘性行从 Listview 切换到 map,因为 onScroll 转换需要相当长的时间才能开始响应。切换到地图,它立即工作。
  • 啊,是的,不确定是否对角实现。从 ListView 切换到 map 是什么意思?在 ScrollView 中使用 {[1,2,3].map(this.renderRow)} renderRow ListView 方法?
  • 我也一直想知道是否有办法将这种逻辑引入 React。不过,我没有任何连接本机 UI 组件的经验。 brightec.co.uk/ideas/…
猜你喜欢
  • 2018-06-21
  • 2021-02-09
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2021-01-07
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多