From b514906144f73355338e8fb841d31ce57d9d8204 Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Fri, 10 Jun 2016 11:49:58 +0300 Subject: [PATCH 1/2] The variable navDepth is now correctly reset to -1 when clearing history --- tns-core-modules/ui/frame/frame.ios.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tns-core-modules/ui/frame/frame.ios.ts b/tns-core-modules/ui/frame/frame.ios.ts index 54525988b..ae7a1eb5e 100644 --- a/tns-core-modules/ui/frame/frame.ios.ts +++ b/tns-core-modules/ui/frame/frame.ios.ts @@ -77,6 +77,10 @@ export class Frame extends frameCommon.Frame { throw new Error("Required page does not have a viewController created."); } + let clearHistory = backstackEntry.entry.clearHistory; + if (clearHistory) { + navDepth = -1; + } navDepth++; let navigationTransition: definition.NavigationTransition; @@ -117,7 +121,7 @@ export class Frame extends frameCommon.Frame { } // We should clear the entire history. - if (backstackEntry.entry.clearHistory) { + if (clearHistory) { viewController.navigationItem.hidesBackButton = true; var newControllers = NSMutableArray.alloc().initWithCapacity(1); newControllers.addObject(viewController); From 1818e087e1414e1c1a0ee9f57a9605c2e50ca3ee Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Fri, 10 Jun 2016 16:57:34 +0300 Subject: [PATCH 2/2] Fixed a visual glitch with manual iOS transitions --- .../ui/transition/fade-transition.ios.ts | 13 ++++++-- .../ui/transition/slide-transition.ios.ts | 31 ++++++++++++------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/tns-core-modules/ui/transition/fade-transition.ios.ts b/tns-core-modules/ui/transition/fade-transition.ios.ts index 2a391dccf..4cc463a88 100644 --- a/tns-core-modules/ui/transition/fade-transition.ios.ts +++ b/tns-core-modules/ui/transition/fade-transition.ios.ts @@ -2,6 +2,9 @@ export class FadeTransition extends transition.Transition { public animateIOSTransition(containerView: UIView, fromView: UIView, toView: UIView, operation: UINavigationControllerOperation, completion: (finished: boolean) => void): void { + let originalToViewAlpha = toView.alpha; + let originalFromViewAlpha = fromView.alpha; + toView.alpha = 0.0; fromView.alpha = 1.0; @@ -14,12 +17,16 @@ export class FadeTransition extends transition.Transition { break; } - var duration = this.getDuration(); - var curve = this.getCurve(); + let duration = this.getDuration(); + let curve = this.getCurve(); UIView.animateWithDurationAnimationsCompletion(duration, () => { UIView.setAnimationCurve(curve); toView.alpha = 1.0; fromView.alpha = 0.0; - }, completion); + }, (finished: boolean) => { + toView.alpha = originalToViewAlpha; + fromView.alpha = originalFromViewAlpha; + completion(finished); + }); } } \ No newline at end of file diff --git a/tns-core-modules/ui/transition/slide-transition.ios.ts b/tns-core-modules/ui/transition/slide-transition.ios.ts index 8a58e2516..b337848ad 100644 --- a/tns-core-modules/ui/transition/slide-transition.ios.ts +++ b/tns-core-modules/ui/transition/slide-transition.ios.ts @@ -1,12 +1,12 @@ import transition = require("ui/transition"); import platform = require("platform"); -var screenWidth = platform.screen.mainScreen.widthDIPs; -var screenHeight = platform.screen.mainScreen.heightDIPs; -var leftEdge = CGAffineTransformMakeTranslation(-screenWidth, 0); -var rightEdge = CGAffineTransformMakeTranslation(screenWidth, 0); -var topEdge = CGAffineTransformMakeTranslation(0, -screenHeight); -var bottomEdge = CGAffineTransformMakeTranslation(0, screenHeight); +let screenWidth = platform.screen.mainScreen.widthDIPs; +let screenHeight = platform.screen.mainScreen.heightDIPs; +let leftEdge = CGAffineTransformMakeTranslation(-screenWidth, 0); +let rightEdge = CGAffineTransformMakeTranslation(screenWidth, 0); +let topEdge = CGAffineTransformMakeTranslation(0, -screenHeight); +let bottomEdge = CGAffineTransformMakeTranslation(0, screenHeight); export class SlideTransition extends transition.Transition { private _direction: string; @@ -17,9 +17,12 @@ export class SlideTransition extends transition.Transition { } public animateIOSTransition(containerView: UIView, fromView: UIView, toView: UIView, operation: UINavigationControllerOperation, completion: (finished: boolean) => void): void { - var fromViewEndTransform: CGAffineTransform; - var toViewBeginTransform: CGAffineTransform; - var push = (operation === UINavigationControllerOperation.UINavigationControllerOperationPush); + let originalToViewTransform = toView.transform; + let originalFromViewTransform = fromView.transform; + + let fromViewEndTransform: CGAffineTransform; + let toViewBeginTransform: CGAffineTransform; + let push = (operation === UINavigationControllerOperation.UINavigationControllerOperationPush); switch (this._direction) { case "left": @@ -52,12 +55,16 @@ export class SlideTransition extends transition.Transition { break; } - var duration = this.getDuration(); - var curve = this.getCurve(); + let duration = this.getDuration(); + let curve = this.getCurve(); UIView.animateWithDurationAnimationsCompletion(duration, () => { UIView.setAnimationCurve(curve); toView.transform = CGAffineTransformIdentity; fromView.transform = fromViewEndTransform; - }, completion); + }, (finished: boolean) => { + toView.transform = originalToViewTransform; + fromView.transform = originalFromViewTransform; + completion(finished); + }); } } \ No newline at end of file