diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj
index 9a47ba9ed..6b6787f34 100644
--- a/CrossPlatformModules.csproj
+++ b/CrossPlatformModules.csproj
@@ -816,6 +816,10 @@
+
+
+ utils.d.ts
+
utils.d.ts
@@ -1971,7 +1975,7 @@
False
-
+
\ No newline at end of file
diff --git a/application/application.ios.ts b/application/application.ios.ts
index 97c84c793..5dd1e1c2b 100644
--- a/application/application.ios.ts
+++ b/application/application.ios.ts
@@ -1,10 +1,10 @@
import appModule = require("application/application-common");
import frame = require("ui/frame");
-import utils = require("utils/utils");
import types = require("utils/types");
import view = require("ui/core/view");
import definition = require("application");
import enums = require("ui/enums");
+import uiUtils = require("ui/utils");
global.moduleMerge(appModule, exports);
@@ -32,7 +32,7 @@ class Window extends UIWindow {
}
public layoutSubviews(): void {
- utils.ios._layoutRootView(this._content, UIScreen.mainScreen().bounds);
+ uiUtils.ios._layoutRootView(this._content, UIScreen.mainScreen().bounds);
}
}
diff --git a/ui/page/page.ios.ts b/ui/page/page.ios.ts
index 74a541e81..8cc170a0d 100644
--- a/ui/page/page.ios.ts
+++ b/ui/page/page.ios.ts
@@ -2,7 +2,7 @@
import definition = require("ui/page");
import viewModule = require("ui/core/view");
import trace = require("trace");
-import utils = require("utils/utils");
+import uiUtils = require("ui/utils");
global.moduleMerge(pageCommon, exports);
@@ -23,7 +23,7 @@ class UIViewControllerImpl extends UIViewController {
trace.write(this._owner + " didRotateFromInterfaceOrientation(" + fromInterfaceOrientation + ")", trace.categories.ViewHierarchy);
if (this._owner._isModal) {
var parentBounds = (this._owner)._UIModalPresentationFormSheet ? (this._owner._nativeView).superview.bounds : UIScreen.mainScreen().bounds;
- utils.ios._layoutRootView(this._owner, parentBounds);
+ uiUtils.ios._layoutRootView(this._owner, parentBounds);
}
}
@@ -37,7 +37,7 @@ class UIViewControllerImpl extends UIViewController {
trace.write(this._owner + " viewDidLayoutSubviews, isLoaded = " + this._owner.isLoaded, trace.categories.ViewHierarchy);
if (this._owner._isModal) {
var parentBounds = (this._owner)._UIModalPresentationFormSheet ? this._owner._nativeView.superview.bounds : UIScreen.mainScreen().bounds;
- utils.ios._layoutRootView(this._owner, parentBounds);
+ uiUtils.ios._layoutRootView(this._owner, parentBounds);
}
else {
this._owner._updateLayout();
@@ -137,7 +137,7 @@ export class Page extends pageCommon.Page {
if (fullscreen) {
this._ios.modalPresentationStyle = UIModalPresentationStyle.UIModalPresentationFullScreen;
- utils.ios._layoutRootView(this, UIScreen.mainScreen().bounds);
+ uiUtils.ios._layoutRootView(this, UIScreen.mainScreen().bounds);
}
else {
this._ios.modalPresentationStyle = UIModalPresentationStyle.UIModalPresentationFormSheet;
@@ -148,7 +148,7 @@ export class Page extends pageCommon.Page {
parent.ios.presentViewControllerAnimatedCompletion(this._ios, false, function completion() {
if (!fullscreen) {
// We can measure and layout the modal page after we know its parent's dimensions.
- utils.ios._layoutRootView(that, that._nativeView.superview.bounds);
+ uiUtils.ios._layoutRootView(that, that._nativeView.superview.bounds);
}
that._raiseShownModallyEvent(parent, context, closeCallback);
diff --git a/ui/tab-view/tab-view.ios.ts b/ui/tab-view/tab-view.ios.ts
index 9df7bfcbd..68ea83848 100644
--- a/ui/tab-view/tab-view.ios.ts
+++ b/ui/tab-view/tab-view.ios.ts
@@ -1,9 +1,9 @@
import common = require("ui/tab-view/tab-view-common");
import definition = require("ui/tab-view");
import dependencyObservable = require("ui/core/dependency-observable");
-import utilsModule = require("utils/utils");
import trace = require("trace");
import utils = require("utils/utils");
+import uiUtils = require("ui/utils");
import view = require("ui/core/view");
import imageSource = require("image-source");
import types = require("utils/types");
@@ -244,8 +244,8 @@ export class TabView extends common.TabView {
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
- this._tabBarHeight = utilsModule.ios.getActualHeight(this._ios.tabBar);
- this._navBarHeight = utilsModule.ios.getActualHeight(this._ios.moreNavigationController.navigationBar);
+ this._tabBarHeight = uiUtils.ios.getActualHeight(this._ios.tabBar);
+ this._navBarHeight = uiUtils.ios.getActualHeight(this._ios.moreNavigationController.navigationBar);
var density = utils.layout.getDisplayDensity();
var measureWidth = 0;
diff --git a/ui/utils/utils.d.ts b/ui/utils/utils.d.ts
new file mode 100644
index 000000000..5b063eddb
--- /dev/null
+++ b/ui/utils/utils.d.ts
@@ -0,0 +1,12 @@
+declare module "ui/utils" {
+ import view = require("ui/core/view");
+ module ios {
+ /**
+ * Gets actual height of a [UIView](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/) widget.
+ * @param uiView - An instance of UIView.
+ */
+ export function getActualHeight(uiView: UIView): number;
+
+ export function _layoutRootView(rootView: view.View, parentBounds: CGRect): void;
+ }
+}
diff --git a/ui/utils/utils.ios.ts b/ui/utils/utils.ios.ts
new file mode 100644
index 000000000..c0ec9dea0
--- /dev/null
+++ b/ui/utils/utils.ios.ts
@@ -0,0 +1,78 @@
+import view = require("ui/core/view");
+import utils = require("utils/utils");
+
+export module ios {
+ export function getActualHeight(uiView: UIView): number {
+ if (uiView.window && !uiView.hidden) {
+ return uiView.frame.size.height;
+ }
+
+ return 0;
+ }
+
+ export function _layoutRootView(rootView: view.View, parentBounds: CGRect) {
+ if (!rootView || !parentBounds) {
+ return;
+ }
+
+ var landscape = utils.ios.isLandscape();
+ var iOSMajorVersion = utils.ios.MajorVersion;
+ var size = parentBounds.size;
+ var width = size.width;
+ var height = size.height;
+
+ //trace.write("--------------------------------------------", "LayoutRootView.iOS");
+ //trace.write("| Layout Root View", "LayoutRootView.iOS");
+ //trace.write("| rootView: " + rootView, "LayoutRootView.iOS");
+ //trace.write("| parentBounds: " + NSStringFromCGRect(parentBounds), "LayoutRootView.iOS");
+ //trace.write("| UIScreen.mainScreen().bounds: " + NSStringFromCGRect(UIScreen.mainScreen().bounds), "LayoutRootView.iOS");
+ //trace.write("| _isModal: " + (rootView)._isModal, "LayoutRootView.iOS");
+ //trace.write("| _UIModalPresentationFormSheet: " + (rootView)._UIModalPresentationFormSheet, "LayoutRootView.iOS");
+ //trace.write("| landscape: " + landscape, "LayoutRootView.iOS");
+ //trace.write("| iOSMajorVersion: " + iOSMajorVersion, "LayoutRootView.iOS");
+ var superview = (rootView._nativeView).superview;
+ //trace.write("| superview: " + superview, "LayoutRootView.iOS");
+ var superViewRotationRadians;
+ if (superview) {
+ superViewRotationRadians = atan2f(superview.transform.b, superview.transform.a);
+ //trace.write("| superViewRotationRadians: " + superViewRotationRadians + " rad.", "LayoutRootView.iOS");
+ //trace.write("| superview.bounds: " + NSStringFromCGRect(superview.bounds), "LayoutRootView.iOS");
+ }
+
+ if (iOSMajorVersion < 8 && landscape && !superViewRotationRadians) {
+ // in iOS 7 when in landscape we switch width with height because on device they don't change even when rotated.
+ //trace.write("| >>> Detected iOS 7 device in landscape mode and superview is not rotated. Manually swapping width and height...", "LayoutRootView.iOS");
+ width = size.height;
+ height = size.width;
+ }
+
+ var statusBarHeight;
+ if (UIApplication.sharedApplication().statusBarHidden || ((rootView)._UIModalPresentationFormSheet && !CGSizeEqualToSize(parentBounds.size, UIScreen.mainScreen().bounds.size))) {
+ statusBarHeight = 0;
+ }
+ else {
+ // Status bar section
+ var statusFrame = UIApplication.sharedApplication().statusBarFrame;
+ try {
+ statusBarHeight = Math.min(statusFrame.size.width, statusFrame.size.height);
+ } catch (ex) {
+ console.log("exception: " + ex);
+ }
+ }
+ //trace.write("| UIApplication.sharedApplication().statusBarHidden: " + UIApplication.sharedApplication().statusBarHidden, "LayoutRootView.iOS");
+ //trace.write("| statusBarHeight: " + statusBarHeight, "LayoutRootView.iOS");
+
+ var origin = parentBounds.origin;
+ var left = origin.x;
+ var top = origin.y + statusBarHeight;
+
+ var widthSpec = utils.layout.makeMeasureSpec(width, utils.layout.EXACTLY);
+ var heightSpec = utils.layout.makeMeasureSpec(height - statusBarHeight, utils.layout.EXACTLY);
+
+ //trace.write("| >>> Will measure and layout with {{" + left + ", " + top + "}{" + width + ", " + height + "}}", "LayoutRootView.iOS");
+ //trace.write("--------------------------------------------", "LayoutRootView.iOS");
+
+ rootView.measure(widthSpec, heightSpec);
+ rootView.layout(left, top, width, height);
+ }
+}
\ No newline at end of file
diff --git a/utils/utils.d.ts b/utils/utils.d.ts
index b044b2b20..c54596630 100644
--- a/utils/utils.d.ts
+++ b/utils/utils.d.ts
@@ -1,6 +1,5 @@
declare module "utils/utils" {
import colorModule = require("color");
- import view = require("ui/core/view");
export var RESOURCE_PREFIX: string;
@@ -129,11 +128,6 @@
* @param uiColor - UIColor instance used to create a NativeScript color.
*/
export function getColor(uiColor: UIColor): colorModule.Color;
- /**
- * Gets actual height of a [UIView](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/) widget.
- * @param uiView - An instance of UIView.
- */
- export function getActualHeight(uiView: UIView): number;
/**
* Gets an information about if current mode is Landscape.
*/
@@ -142,8 +136,6 @@
* Gets the iOS device major version (for 8.1 will return 8).
*/
export var MajorVersion: number;
-
- export function _layoutRootView(rootView: view.View, parentBounds: CGRect): void;
}
/**
* An utility function that copies properties from source object to target object.
diff --git a/utils/utils.ios.ts b/utils/utils.ios.ts
index b96b9de01..0a477c981 100644
--- a/utils/utils.ios.ts
+++ b/utils/utils.ios.ts
@@ -1,6 +1,5 @@
import common = require("utils/utils-common");
import colorModule = require("color");
-import view = require("ui/core/view");
global.moduleMerge(common, exports);
@@ -60,14 +59,6 @@ export module ios {
return new colorModule.Color(alpha, red, green, blue);
}
- export function getActualHeight(uiView: UIView): number {
- if (uiView.window && !uiView.hidden) {
- return uiView.frame.size.height;
- }
-
- return 0;
- }
-
export function isLandscape(): boolean {
var device = UIDevice.currentDevice();
var statusBarOrientation = UIApplication.sharedApplication().statusBarOrientation;
@@ -76,72 +67,6 @@ export module ios {
}
export var MajorVersion = NSString.stringWithString(UIDevice.currentDevice().systemVersion).intValue;
-
- export function _layoutRootView(rootView: view.View, parentBounds: CGRect) {
- if (!rootView || !parentBounds) {
- return;
- }
-
- var landscape = isLandscape();
- var iOSMajorVersion = MajorVersion;
- var size = parentBounds.size;
- var width = size.width;
- var height = size.height;
-
- //trace.write("--------------------------------------------", "LayoutRootView.iOS");
- //trace.write("| Layout Root View", "LayoutRootView.iOS");
- //trace.write("| rootView: " + rootView, "LayoutRootView.iOS");
- //trace.write("| parentBounds: " + NSStringFromCGRect(parentBounds), "LayoutRootView.iOS");
- //trace.write("| UIScreen.mainScreen().bounds: " + NSStringFromCGRect(UIScreen.mainScreen().bounds), "LayoutRootView.iOS");
- //trace.write("| _isModal: " + (rootView)._isModal, "LayoutRootView.iOS");
- //trace.write("| _UIModalPresentationFormSheet: " + (rootView)._UIModalPresentationFormSheet, "LayoutRootView.iOS");
- //trace.write("| landscape: " + landscape, "LayoutRootView.iOS");
- //trace.write("| iOSMajorVersion: " + iOSMajorVersion, "LayoutRootView.iOS");
- var superview = (rootView._nativeView).superview;
- //trace.write("| superview: " + superview, "LayoutRootView.iOS");
- var superViewRotationRadians;
- if (superview) {
- superViewRotationRadians = atan2f(superview.transform.b, superview.transform.a);
- //trace.write("| superViewRotationRadians: " + superViewRotationRadians + " rad.", "LayoutRootView.iOS");
- //trace.write("| superview.bounds: " + NSStringFromCGRect(superview.bounds), "LayoutRootView.iOS");
- }
-
- if (iOSMajorVersion < 8 && landscape && !superViewRotationRadians) {
- // in iOS 7 when in landscape we switch width with height because on device they don't change even when rotated.
- //trace.write("| >>> Detected iOS 7 device in landscape mode and superview is not rotated. Manually swapping width and height...", "LayoutRootView.iOS");
- width = size.height;
- height = size.width;
- }
-
- var statusBarHeight;
- if (UIApplication.sharedApplication().statusBarHidden || ((rootView)._UIModalPresentationFormSheet && !CGSizeEqualToSize(parentBounds.size, UIScreen.mainScreen().bounds.size))) {
- statusBarHeight = 0;
- }
- else {
- // Status bar section
- var statusFrame = UIApplication.sharedApplication().statusBarFrame;
- try {
- statusBarHeight = Math.min(statusFrame.size.width, statusFrame.size.height);
- } catch (ex) {
- console.log("exception: " + ex);
- }
- }
- //trace.write("| UIApplication.sharedApplication().statusBarHidden: " + UIApplication.sharedApplication().statusBarHidden, "LayoutRootView.iOS");
- //trace.write("| statusBarHeight: " + statusBarHeight, "LayoutRootView.iOS");
-
- var origin = parentBounds.origin;
- var left = origin.x;
- var top = origin.y + statusBarHeight;
-
- var widthSpec = layout.makeMeasureSpec(width, common.layout.EXACTLY);
- var heightSpec = layout.makeMeasureSpec(height - statusBarHeight, common.layout.EXACTLY);
-
- //trace.write("| >>> Will measure and layout with {{" + left + ", " + top + "}{" + width + ", " + height + "}}", "LayoutRootView.iOS");
- //trace.write("--------------------------------------------", "LayoutRootView.iOS");
-
- rootView.measure(widthSpec, heightSpec);
- rootView.layout(left, top, width, height);
- }
}
export function GC() {