From 351d78e80c27853ced081afd11c023d1fc7cefa8 Mon Sep 17 00:00:00 2001 From: Martin Yankov Date: Tue, 4 Sep 2018 10:22:53 +0300 Subject: [PATCH] fix tabview safe areas --- .../action-bar/tabview-hscroll-hstack-page.xml | 8 ++++++-- .../action-bar/tabview-listview-page.xml | 8 ++++++-- .../action-bar/tabview-vscroll-vstack-page.xml | 8 ++++++-- .../tabview-hscroll-hstack-page.xml | 10 +++++++--- .../no-action-bar/tabview-listview-page.xml | 8 ++++++-- .../tabview-vscroll-vstack-page.xml | 10 +++++++--- tns-core-modules/ui/core/view/view.ios.ts | 18 ++++++++++-------- 7 files changed, 48 insertions(+), 22 deletions(-) diff --git a/e2e/safe-area/app/tabview/action-bar/tabview-hscroll-hstack-page.xml b/e2e/safe-area/app/tabview/action-bar/tabview-hscroll-hstack-page.xml index ea0321eeb..88766ea88 100644 --- a/e2e/safe-area/app/tabview/action-bar/tabview-hscroll-hstack-page.xml +++ b/e2e/safe-area/app/tabview/action-bar/tabview-hscroll-hstack-page.xml @@ -7,10 +7,14 @@ - + + + - + + + diff --git a/e2e/safe-area/app/tabview/action-bar/tabview-listview-page.xml b/e2e/safe-area/app/tabview/action-bar/tabview-listview-page.xml index bd1f42856..2a43a47ea 100644 --- a/e2e/safe-area/app/tabview/action-bar/tabview-listview-page.xml +++ b/e2e/safe-area/app/tabview/action-bar/tabview-listview-page.xml @@ -7,10 +7,14 @@ - + + + - + + + diff --git a/e2e/safe-area/app/tabview/action-bar/tabview-vscroll-vstack-page.xml b/e2e/safe-area/app/tabview/action-bar/tabview-vscroll-vstack-page.xml index 9dfee2c7d..744b043e1 100644 --- a/e2e/safe-area/app/tabview/action-bar/tabview-vscroll-vstack-page.xml +++ b/e2e/safe-area/app/tabview/action-bar/tabview-vscroll-vstack-page.xml @@ -7,10 +7,14 @@ - + + + - + + + diff --git a/e2e/safe-area/app/tabview/no-action-bar/tabview-hscroll-hstack-page.xml b/e2e/safe-area/app/tabview/no-action-bar/tabview-hscroll-hstack-page.xml index 8ef580334..52262e54b 100644 --- a/e2e/safe-area/app/tabview/no-action-bar/tabview-hscroll-hstack-page.xml +++ b/e2e/safe-area/app/tabview/no-action-bar/tabview-hscroll-hstack-page.xml @@ -1,13 +1,17 @@ - + + + - + + + diff --git a/e2e/safe-area/app/tabview/no-action-bar/tabview-listview-page.xml b/e2e/safe-area/app/tabview/no-action-bar/tabview-listview-page.xml index 5de05896e..bd6ac5190 100644 --- a/e2e/safe-area/app/tabview/no-action-bar/tabview-listview-page.xml +++ b/e2e/safe-area/app/tabview/no-action-bar/tabview-listview-page.xml @@ -4,10 +4,14 @@ - + + + - + + + diff --git a/e2e/safe-area/app/tabview/no-action-bar/tabview-vscroll-vstack-page.xml b/e2e/safe-area/app/tabview/no-action-bar/tabview-vscroll-vstack-page.xml index 6bfba01af..194a30637 100644 --- a/e2e/safe-area/app/tabview/no-action-bar/tabview-vscroll-vstack-page.xml +++ b/e2e/safe-area/app/tabview/no-action-bar/tabview-vscroll-vstack-page.xml @@ -1,13 +1,17 @@ - + + + - + + + diff --git a/tns-core-modules/ui/core/view/view.ios.ts b/tns-core-modules/ui/core/view/view.ios.ts index d0da48a8f..23d4be955 100644 --- a/tns-core-modules/ui/core/view/view.ios.ts +++ b/tns-core-modules/ui/core/view/view.ios.ts @@ -831,23 +831,25 @@ export namespace ios { } function getAvailableSpaceFromParent(view: View): { safeArea: CGRect, fullscreen: CGRect } { - // Search for ViewController or UIScrollView parent to get their content size. - let parent = view.parent; - while (parent && !parent.viewController && !(parent.nativeViewProtected instanceof UIScrollView)) { - parent = parent.parent as View; + // Search for view and parents with ViewController or parents with UIScrollView parent to get their content size. + if (view && !view.viewController) { + view = view.parent as View; + while (view && !view.viewController && !(view.nativeViewProtected instanceof UIScrollView)) { + view = view.parent as View; + } } let fullscreen = null; let safeArea = null; - if (parent.viewController) { - const nativeView = parent.viewController.view; + if (view.viewController) { + const nativeView = view.viewController.view; safeArea = nativeView.safeAreaLayoutGuide.layoutFrame; fullscreen = nativeView.frame; } - if (parent.nativeViewProtected instanceof UIScrollView) { - const nativeView = parent.nativeViewProtected; + if (view.nativeViewProtected instanceof UIScrollView) { + const nativeView = view.nativeViewProtected; safeArea = nativeView.safeAreaLayoutGuide.layoutFrame; fullscreen = CGRectMake(0, 0, nativeView.contentSize.width, nativeView.contentSize.height); }