Skip to content

Commit 3faf9d5

Browse files
committed
fix: use iOS native-helper for 3d-rotate
1 parent d5cc264 commit 3faf9d5

File tree

2 files changed

+17
-42
lines changed

2 files changed

+17
-42
lines changed

nativescript-core/ui/animation/animation.ios.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -693,12 +693,7 @@ export class Animation extends AnimationBase {
693693
}
694694
}
695695

696-
/**
697-
*
698-
* @param view
699-
* @param expectedAffineTransformString in the format [a, b, c, d, tx, ty] @see https://developer.apple.com/documentation/uikit/1624505-cgaffinetransformfromstring?language=objc a,b,c,d in radians
700-
*/
701-
export function _getTransformMismatchErrorMessage(view: View, expectedAffineTransformString?: string): string {
696+
export function _getTransformMismatchErrorMessage(view: View): string {
702697
// Order is important: translate, rotate, scale
703698
let result: CGAffineTransform = CGAffineTransformIdentity;
704699
const tx = view.translateX;
@@ -709,12 +704,8 @@ export function _getTransformMismatchErrorMessage(view: View, expectedAffineTran
709704
let viewTransform = NSStringFromCGAffineTransform(result);
710705
let nativeTransform = NSStringFromCGAffineTransform(view.nativeViewProtected.transform);
711706

712-
if (!expectedAffineTransformString) {
713-
expectedAffineTransformString = nativeTransform;
714-
}
715-
716-
if (viewTransform !== expectedAffineTransformString) {
717-
return "View transform does not match expected. View: " + viewTransform + "; Expected: " + expectedAffineTransformString;
707+
if (viewTransform !== nativeTransform) {
708+
return "View and Native transforms do not match. View: " + viewTransform + "; Native: " + nativeTransform;
718709
}
719710

720711
return undefined;

tests/app/ui/animation/animation-tests.ts

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ export function test_AnimatingProperties(done) {
5050
.then(() => {
5151
//console.log("Animation finished.");
5252
// >> (hide)
53-
const expectedIOSAffineTransform = "[-2, 2.4492935982947064e-16, -2.4492935982947064e-16, -2, 100, 100]";
54-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
53+
assertIOSNativeTransformIsCorrect(label);
5554
done();
5655
// << (hide)
5756
})
@@ -164,8 +163,7 @@ export function test_ChainingAnimations(done) {
164163
.then(() => {
165164
//console.log("Animation finished");
166165
// >> (hide)
167-
const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]";
168-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
166+
assertIOSNativeTransformIsCorrect(label);
169167
done();
170168
// << (hide)
171169
})
@@ -194,8 +192,7 @@ export function test_ReusingAnimations(done) {
194192
.then(() => {
195193
//console.log("Animation finished");
196194
// >> (hide)
197-
const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]";
198-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
195+
assertIOSNativeTransformIsCorrect(label);
199196
done();
200197
// << (hide)
201198
})
@@ -234,10 +231,9 @@ export function test_AnimatingMultipleViews(done) {
234231
.then(() => {
235232
//console.log("Animations finished");
236233
// >> (hide)
237-
const expectedIOSAffineTransform = "[1, 0, 0, 1, 200, 200]";
238-
assertIOSNativeTransformIsCorrect(label1, expectedIOSAffineTransform);
239-
assertIOSNativeTransformIsCorrect(label2, expectedIOSAffineTransform);
240-
assertIOSNativeTransformIsCorrect(label3, expectedIOSAffineTransform);
234+
assertIOSNativeTransformIsCorrect(label1);
235+
assertIOSNativeTransformIsCorrect(label2);
236+
assertIOSNativeTransformIsCorrect(label3);
241237
done();
242238
// << (hide)
243239
})
@@ -371,9 +367,7 @@ export function test_AnimateTranslate(done) {
371367
.then(() => {
372368
TKUnit.assertEqual(label.translateX, 100, "label.translateX");
373369
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
374-
375-
const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]";
376-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
370+
assertIOSNativeTransformIsCorrect(label);
377371
done();
378372
})
379373
.catch((e) => {
@@ -388,9 +382,7 @@ export function test_AnimateScale(done) {
388382
.then(() => {
389383
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
390384
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
391-
392-
const expectedIOSAffineTransform = "[2, 0, 0, 3, 0, 0]";
393-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
385+
assertIOSNativeTransformIsCorrect(label);
394386
done();
395387
})
396388
.catch((e) => {
@@ -535,9 +527,7 @@ export function test_AnimateTranslateScaleAndRotateSimultaneously(done) {
535527
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
536528
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
537529
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
538-
539-
const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]";
540-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
530+
assertIOSNativeTransformIsCorrect(label);
541531
done();
542532
})
543533
.catch((e) => {
@@ -552,9 +542,7 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
552542
.then(() => {
553543
TKUnit.assertEqual(label.translateX, 100, "label.translateX");
554544
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
555-
556-
const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]";
557-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
545+
assertIOSNativeTransformIsCorrect(label);
558546

559547
return label.animate({ scale: { x: 2, y: 3 }, duration: 5 });
560548
})
@@ -563,9 +551,7 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
563551
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
564552
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
565553
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
566-
567-
const expectedIOSAffineTransform = "[2, 0, 0, 3, 100, 200]";
568-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
554+
assertIOSNativeTransformIsCorrect(label);
569555

570556
return label.animate({ rotate: 123, duration: 5 });
571557
})
@@ -575,9 +561,7 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) {
575561
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
576562
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
577563
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
578-
579-
const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]";
580-
assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform);
564+
assertIOSNativeTransformIsCorrect(label);
581565
done();
582566
})
583567
.catch((e) => {
@@ -639,9 +623,9 @@ export function test_PlayPromiseIsRejectedWhenAnimationIsCancelled(done) {
639623
animation.cancel();
640624
}
641625

642-
function assertIOSNativeTransformIsCorrect(view: viewModule.View, expectedIOSAffineTransformString?: string) {
626+
function assertIOSNativeTransformIsCorrect(view: viewModule.View) {
643627
if (view.ios) {
644-
var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view, expectedIOSAffineTransformString);
628+
var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view);
645629
if (errorMessage) {
646630
TKUnit.assert(false, errorMessage);
647631
}

0 commit comments

Comments
 (0)