@@ -59,11 +59,17 @@ class UILayoutViewController extends UIViewController {
5959
6060 if ( parent ) {
6161 const parentPageInsetsTop = parent . nativeViewProtected . safeAreaInsets . top ;
62- const currentInsetsTop = this . view . safeAreaInsets . top ;
63- const additionalInsetsTop = Math . max ( parentPageInsetsTop - currentInsetsTop , 0 ) ;
64-
6562 const parentPageInsetsBottom = parent . nativeViewProtected . safeAreaInsets . bottom ;
66- const currentInsetsBottom = this . view . safeAreaInsets . bottom ;
63+ let currentInsetsTop = this . view . safeAreaInsets . top ;
64+ let currentInsetsBottom = this . view . safeAreaInsets . bottom ;
65+
66+ // Safe area insets include additional safe area insets too, so subtract old values
67+ if ( this . additionalSafeAreaInsets ) {
68+ currentInsetsTop -= this . additionalSafeAreaInsets . top ;
69+ currentInsetsBottom -= this . additionalSafeAreaInsets . bottom ;
70+ }
71+
72+ const additionalInsetsTop = Math . max ( parentPageInsetsTop - currentInsetsTop , 0 ) ;
6773 const additionalInsetsBottom = Math . max ( parentPageInsetsBottom - currentInsetsBottom , 0 ) ;
6874
6975 if ( additionalInsetsTop > 0 || additionalInsetsBottom > 0 ) {
@@ -266,7 +272,7 @@ export class IOSHelper {
266272 const adjustedFrame = IOSHelper . getFrameFromPosition ( position , insets ) ;
267273
268274 if ( Trace . isEnabled ( ) ) {
269- Trace . write ( `${ view } :shrinkToSafeArea: ${ JSON . stringify ( IOSHelper . getPositionFromFrame ( adjustedFrame ) ) } ` , Trace . categories . Layout ) ;
275+ Trace . write ( `${ view } :shrinkToSafeArea: ${ JSON . stringify ( IOSHelper . getPositionFromFrame ( adjustedFrame ) ) } ` , Trace . categories . Layout ) ;
270276 }
271277
272278 return adjustedFrame ;
0 commit comments