From 6e0ee3f34413d7cd067afc17e2cebb307a957c81 Mon Sep 17 00:00:00 2001 From: Martin Yankov Date: Mon, 27 Aug 2018 14:32:45 +0300 Subject: [PATCH] remove locationOnScreen usage --- tns-core-modules/ui/core/view/view.d.ts | 2 +- tns-core-modules/ui/core/view/view.ios.ts | 56 ++++++++++------------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/tns-core-modules/ui/core/view/view.d.ts b/tns-core-modules/ui/core/view/view.d.ts index 15a718f6e..e9901a873 100644 --- a/tns-core-modules/ui/core/view/view.d.ts +++ b/tns-core-modules/ui/core/view/view.d.ts @@ -709,7 +709,7 @@ export abstract class View extends ViewBase { */ export class ContainerView extends View { /** - * Instruct container view to expand the safe area. This property is iOS specific. Default value: true + * Instruct container view to expand beyond the safe area. This property is iOS specific. Default value: true */ public iosExpandSafeArea: boolean; } diff --git a/tns-core-modules/ui/core/view/view.ios.ts b/tns-core-modules/ui/core/view/view.ios.ts index 5ba1f4129..be4f595b7 100644 --- a/tns-core-modules/ui/core/view/view.ios.ts +++ b/tns-core-modules/ui/core/view/view.ios.ts @@ -233,41 +233,35 @@ export class View extends ViewCommon { const adjustedFrame = ios.getFrameFromPosition(position, insets); return adjustedFrame; } - } else { - const locationOnScreen = this.getLocationOnScreen(); + } else if (this.nativeViewProtected && this.nativeViewProtected.window) { + const parentWithController = ios.getParentWithViewController(this); + const safeArea = parentWithController.viewController.view.safeAreaLayoutGuide.layoutFrame; + const fullscreen = parentWithController.viewController.view.frame; - if (locationOnScreen) { - const parentWithController = ios.getParentWithViewController(this); - const safeArea = parentWithController.viewController.view.safeAreaLayoutGuide.layoutFrame; - const fullscreen = parentWithController.viewController.view.frame; - const onScreenLeft = layout.round(layout.toDevicePixels(locationOnScreen.x)); - const onScreenTop = layout.round(layout.toDevicePixels(locationOnScreen.y)); + const position = ios.getPositionFromFrame(frame); + const safeAreaPosition = ios.getPositionFromFrame(safeArea); + const fullscreenPosition = ios.getPositionFromFrame(fullscreen); - const position = ios.getPositionFromFrame(frame); - const safeAreaPosition = ios.getPositionFromFrame(safeArea); - const fullscreenPosition = ios.getPositionFromFrame(fullscreen); + const adjustedPosition = position; - const adjustedPosition = position; - - if (position.left && onScreenLeft <= safeAreaPosition.left) { - adjustedPosition.left = fullscreenPosition.left; - } - - if (position.top && onScreenTop <= safeAreaPosition.top) { - adjustedPosition.top = fullscreenPosition.top; - } - - if (position.right < fullscreenPosition.right && position.right >= safeAreaPosition.right) { - adjustedPosition.right = fullscreenPosition.right; - } - - if (position.bottom < fullscreenPosition.bottom && position.bottom >= safeAreaPosition.bottom) { - adjustedPosition.bottom = fullscreenPosition.bottom; - } - - const adjustedFrame = CGRectMake(layout.toDeviceIndependentPixels(adjustedPosition.left), layout.toDeviceIndependentPixels(adjustedPosition.top), layout.toDeviceIndependentPixels(adjustedPosition.right - adjustedPosition.left), layout.toDeviceIndependentPixels(adjustedPosition.bottom - adjustedPosition.top)); - return adjustedFrame; + if (position.left && position.left <= safeAreaPosition.left) { + adjustedPosition.left = fullscreenPosition.left; } + + if (position.top && position.top <= safeAreaPosition.top) { + adjustedPosition.top = fullscreenPosition.top; + } + + if (position.right < fullscreenPosition.right && position.right >= safeAreaPosition.right) { + adjustedPosition.right = fullscreenPosition.right; + } + + if (position.bottom < fullscreenPosition.bottom && position.bottom >= safeAreaPosition.bottom) { + adjustedPosition.bottom = fullscreenPosition.bottom; + } + + const adjustedFrame = CGRectMake(layout.toDeviceIndependentPixels(adjustedPosition.left), layout.toDeviceIndependentPixels(adjustedPosition.top), layout.toDeviceIndependentPixels(adjustedPosition.right - adjustedPosition.left), layout.toDeviceIndependentPixels(adjustedPosition.bottom - adjustedPosition.top)); + return adjustedFrame; } return null;