mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-13 09:21:46 +08:00
rename and extend new maintain visible content position feature
Summary:
Builds off of cae7179c94
- Make the prop a dictionary for more configuration options
- Rename `maintainPositionAtOrBeyondIndex` -> `maintainVisibleContentPosition` + `minIndexForVisible`
- Add autoscroll threshold feature
Given the async native of RN JS and background layout, there is no way to trigger the scrollTo from JS without risking a delay, so we add the feature in native code.
== Test Plan ==
ScrollViewExample:
https://youtu.be/pmY8pxC9PRs
Reviewed By: shergin
Differential Revision: D6729160
fbshipit-source-id: 70f9bae460ce84567857a4f696da78ce9b3b834c
This commit is contained in:
committed by
Facebook Github Bot
parent
7e7d00aebe
commit
65184ec6b0
@@ -234,18 +234,33 @@ const ScrollView = createReactClass({
|
||||
*/
|
||||
keyboardShouldPersistTaps: PropTypes.oneOf(['always', 'never', 'handled', false, true]),
|
||||
/**
|
||||
* When non-null, the scroll view will adjust the scroll position so that the content at or
|
||||
* beyond the specified index that is currently visible will not change position. This is useful
|
||||
* for lists that are loading content in both directions, e.g. a chat thread, where new messages
|
||||
* coming in might otherwise cause the scroll position to jump. A value of 1 can be used to skip
|
||||
* a spinner that does not need to maintain position. The default value is null.
|
||||
* When set, the scroll view will adjust the scroll position so that the first child that is
|
||||
* currently visible and at or beyond `minIndexForVisible` will not change position. This is
|
||||
* useful for lists that are loading content in both directions, e.g. a chat thread, where new
|
||||
* messages coming in might otherwise cause the scroll position to jump. A value of 0 is common,
|
||||
* but other values such as 1 can be used to skip loading spinners or other content that should
|
||||
* not maintain position.
|
||||
*
|
||||
* Caveat: reordering elements in the scrollview with this enabled will probably cause jumpiness
|
||||
* and jank. It can be fixed, but there are currently no plans to do so.
|
||||
* The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll
|
||||
* to the top after making the adjustment if the user was within the threshold of the top before
|
||||
* the adjustment was made. This is also useful for chat-like applications where you want to see
|
||||
* new messages scroll into place, but not if the user has scrolled up a ways and it would be
|
||||
* disruptive to scroll a bunch.
|
||||
*
|
||||
* Caveat 1: Reordering elements in the scrollview with this enabled will probably cause
|
||||
* jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,
|
||||
* don't re-order the content of any ScrollViews or Lists that use this feature.
|
||||
*
|
||||
* Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute
|
||||
* visibility. Occlusion, transforms, and other complexity won't be taken into account as to
|
||||
* whether content is "visible" or not.
|
||||
*
|
||||
* @platform ios
|
||||
*/
|
||||
maintainPositionAtOrBeyondIndex: PropTypes.number,
|
||||
maintainVisibleContentPosition: PropTypes.shape({
|
||||
minIndexForVisible: PropTypes.number.isRequired,
|
||||
autoscrollToTopThreshold: PropTypes.number,
|
||||
}),
|
||||
/**
|
||||
* The maximum allowed zoom scale. The default value is 1.0.
|
||||
* @platform ios
|
||||
|
||||
Reference in New Issue
Block a user