From 4f986a031dda370b4fb566938ce74657c5b3655e Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Thu, 10 Oct 2024 14:45:11 +0800 Subject: [PATCH 1/3] [iOS] Fixes scrollIndicatorInsets not work in old arch --- .../React/Views/ScrollView/RCTScrollView.m | 19 +++++++++++++++++++ .../Views/ScrollView/RCTScrollViewManager.m | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/react-native/React/Views/ScrollView/RCTScrollView.m b/packages/react-native/React/Views/ScrollView/RCTScrollView.m index e9ce48c1e8e7..41857d5fec15 100644 --- a/packages/react-native/React/Views/ScrollView/RCTScrollView.m +++ b/packages/react-native/React/Views/ScrollView/RCTScrollView.m @@ -1055,6 +1055,25 @@ -(type)getter \ RCT_SET_AND_PRESERVE_OFFSET(setShowsVerticalScrollIndicator, showsVerticalScrollIndicator, BOOL) RCT_SET_AND_PRESERVE_OFFSET(setZoomScale, zoomScale, CGFloat); +- (void)setScrollIndicatorInsets:(UIEdgeInsets)value +{ + CGPoint contentOffset = _scrollView.contentOffset; + [_scrollView setScrollIndicatorInsets:value]; + _scrollView.contentOffset = contentOffset; +} + +- (UIEdgeInsets)scrollIndicatorInsets +{ + UIEdgeInsets verticalScrollIndicatorInsets = [_scrollView verticalScrollIndicatorInsets]; + UIEdgeInsets horizontalScrollIndicatorInsets = [_scrollView horizontalScrollIndicatorInsets]; + + return UIEdgeInsetsMake( + verticalScrollIndicatorInsets.top, + horizontalScrollIndicatorInsets.left, + verticalScrollIndicatorInsets.bottom, + horizontalScrollIndicatorInsets.right); +} + - (void)setAutomaticallyAdjustsScrollIndicatorInsets:(BOOL)automaticallyAdjusts API_AVAILABLE(ios(13.0)) { // `automaticallyAdjustsScrollIndicatorInsets` is available since iOS 13. diff --git a/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m b/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m index cd1e7eb016ab..878825656f27 100644 --- a/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m +++ b/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m @@ -83,7 +83,7 @@ - (UIView *)view RCT_EXPORT_VIEW_PROPERTY(scrollEventThrottle, NSTimeInterval) RCT_EXPORT_VIEW_PROPERTY(zoomScale, CGFloat) RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets) -RCT_EXPORT_VIEW_PROPERTY(verticalScrollIndicatorInsets, UIEdgeInsets) +RCT_EXPORT_VIEW_PROPERTY(scrollIndicatorInsets, UIEdgeInsets) RCT_EXPORT_VIEW_PROPERTY(scrollToOverflowEnabled, BOOL) RCT_EXPORT_VIEW_PROPERTY(snapToInterval, int) RCT_EXPORT_VIEW_PROPERTY(disableIntervalMomentum, BOOL) From ce2173ff9cb3c3780e04e418021b04c90ebbb980 Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Thu, 10 Oct 2024 17:41:24 +0800 Subject: [PATCH 2/3] Remove contentOffset --- packages/react-native/React/Views/ScrollView/RCTScrollView.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/react-native/React/Views/ScrollView/RCTScrollView.m b/packages/react-native/React/Views/ScrollView/RCTScrollView.m index 41857d5fec15..31b76146e614 100644 --- a/packages/react-native/React/Views/ScrollView/RCTScrollView.m +++ b/packages/react-native/React/Views/ScrollView/RCTScrollView.m @@ -1057,9 +1057,7 @@ -(type)getter \ - (void)setScrollIndicatorInsets:(UIEdgeInsets)value { - CGPoint contentOffset = _scrollView.contentOffset; [_scrollView setScrollIndicatorInsets:value]; - _scrollView.contentOffset = contentOffset; } - (UIEdgeInsets)scrollIndicatorInsets From abaa37d906fe14bf8cdd647db9f062942acbadc0 Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Thu, 10 Oct 2024 17:42:43 +0800 Subject: [PATCH 3/3] Restore verticalScrollIndicatorInsets --- .../react-native/React/Views/ScrollView/RCTScrollViewManager.m | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m b/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m index 878825656f27..c1d017203fa8 100644 --- a/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m +++ b/packages/react-native/React/Views/ScrollView/RCTScrollViewManager.m @@ -84,6 +84,7 @@ - (UIView *)view RCT_EXPORT_VIEW_PROPERTY(zoomScale, CGFloat) RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets) RCT_EXPORT_VIEW_PROPERTY(scrollIndicatorInsets, UIEdgeInsets) +RCT_EXPORT_VIEW_PROPERTY(verticalScrollIndicatorInsets, UIEdgeInsets) RCT_EXPORT_VIEW_PROPERTY(scrollToOverflowEnabled, BOOL) RCT_EXPORT_VIEW_PROPERTY(snapToInterval, int) RCT_EXPORT_VIEW_PROPERTY(disableIntervalMomentum, BOOL)