You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e7e2c50
Browse filesBrowse the repository at this point in the historyBrowse files
[chore] Internal: UIKit's paging values and math for touch presentations. The page a release settles on, the settle that carries it there and `setContentOffset(animated:)` are measured on iOS 26.2 and replayed against the recorded frames to under half a pixel. Not exported from the package entry point; no component uses it yet.
Copy file name to clipboardExpand all lines: packages/core/src/motion/MEASUREMENTS.md
+8-1Lines changed: 8 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,7 +43,7 @@ installed); rows marked † also on iOS 18 for the pre-glass delta. iPhone
43
43
| M-S2 | Momentum coast | A long list (Contacts, or a probe table of 500 rows): flicks released at 1000, 2500, 5000 pt/s | contentOffset(t) from release to rest; decay constant; per-millisecond vs per-frame model; the speed at which it stops | C |`decay.ts`|
44
44
| M-S3 | Bounce-back spring | Same list: drag 120 pt past the top, hold still, release; a flick into the top edge at 3000 pt/s | contentOffset(t) after release and after edge contact; spring response and damping ratio; velocity hand-off | C |`scroll.bounce`|
45
45
| M-S5 | Rubber band | Same list on an 852 pt view: drag 100, 300, 600 pt past the top; a horizontal pager | displayed overflow against finger overflow; confirm c = 0.55 and d = the view's size on the axis | C |`scroll.rubberBand`|
46
-
| M-PG1 | Paging | Photos full-screen swipes; a probe paging scroll view | page chosen per release position × velocity (thresholds; at most one page?); contentOffset(t) onto the page | B, C |`scroll.paging`|
46
+
| M-PG1 | Paging | Photos full-screen swipes; a probe paging scroll view | page chosen per release position × velocity (thresholds; at most one page?); contentOffset(t) onto the page | B, C |`paging`(measured; see M-PG12)|
47
47
| M-ST1 | Scroll to top | Settings scrolled down 500, 2000, 8000 pt; tap the status bar | contentOffset(t); duration against distance; curve or spring fit | B, C |`scroll.scrollToTopRate`|
48
48
| M-N1 | Navigation push | Settings: tap General | incoming leading edge x(t), outgoing x(t) (parallax fraction), dimming alpha(t); animation parameters | A, B |`springs.navigationPush`|
49
49
| M-N2 | Navigation pop | General: back button | same as M-N1 | A, B |`springs.navigationPop`|
@@ -71,6 +71,13 @@ initial velocity's sign flipped, a curve that overshoots. Push and pop are
71
71
not Core Animation animations on iOS 26.2: UIKit writes presentation
| M-PG12 | End of a settle | Same pager: releases at rest from 10 %, 49 %, 60 % and 90 % of a page, logged at 120 fps | remaining distance and step velocity at the frame the offset lands exactly on the page | C |`paging.integrator.restSpeed`|
79
+
| M-PG13 | Settle velocity floor | Same pager: steady releases from 200 to 250 pt/s in 5 pt/s steps, at 25 % of a page | the slowest release whose `scrollViewWillEndDragging` velocity is not 0 | C |`paging.release.velocityFloor`|
80
+
74
81
## Gestures (UIKit gesture recognizers)
75
82
76
83
Thresholds the gesture system reads (`uikit/gestures.ts`). Safari on iOS runs
|`uikit/timing.ts`| Non-spring clocks and curves: press highlight, Core Animation's named curves, keyboard, Reduced Motion cross-fade. |
18
+
|`uikit/paging.ts`| A paging UIScrollView: the integrator that settles a release on its page, the page rule, the catch, `setContentOffset(animated:)`. |
0 commit comments