| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -693,7 +693,12 @@ export class Animation extends AnimationBase { | |||
| 693 | 693 | } | |
| 694 | 694 | } | |
| 695 | 695 | ||
| 696 | - export function _getTransformMismatchErrorMessage(view: View): string { | ||
| 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 { | ||
| 697 | 702 | // Order is important: translate, rotate, scale | |
| 698 | 703 | let result: CGAffineTransform = CGAffineTransformIdentity; | |
| 699 | 704 | const tx = view.translateX; | |
@@ -704,8 +709,12 @@ export function _getTransformMismatchErrorMessage(view: View): string { | |||
| 704 | 709 | let viewTransform = NSStringFromCGAffineTransform(result); | |
| 705 | 710 | let nativeTransform = NSStringFromCGAffineTransform(view.nativeViewProtected.transform); | |
| 706 | 711 | ||
| 707 | - if (viewTransform !== nativeTransform) { | ||
| 708 | - return "View and Native transforms do not match. View: " + viewTransform + "; Native: " + nativeTransform; | ||
| 712 | + if (!expectedAffineTransformString) { | ||
| 713 | + expectedAffineTransformString = nativeTransform; | ||
| 714 | + } | ||
| 715 | + | ||
| 716 | + if (viewTransform !== expectedAffineTransformString) { | ||
| 717 | + return "View transform does not match expected. View: " + viewTransform + "; Expected: " + expectedAffineTransformString; | ||
| 709 | 718 | } | |
| 710 | 719 | ||
| 711 | 720 | return undefined; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -9,6 +9,7 @@ import { | |||
| 9 | 9 | import { ios } from "./view-helper"; | |
| 10 | 10 | import { ios as iosBackground, Background } from "../../styling/background"; | |
| 11 | 11 | import { ios as iosUtils } from "../../../utils/utils"; | |
| 12 | + import { ios as iosNativeHelper } from "../../../utils/native-helper"; | ||
| 12 | 13 | import { | |
| 13 | 14 | perspectiveProperty, Visibility, | |
| 14 | 15 | visibilityProperty, opacityProperty, | |
@@ -354,7 +355,7 @@ export class View extends ViewCommon implements ViewDefinition { | |||
| 354 | 355 | let transform = CATransform3DIdentity; | |
| 355 | 356 | transform.m34 = -1 / perspective; | |
| 356 | 357 | transform = CATransform3DTranslate(transform, this.translateX, this.translateY, 0); | |
| 357 | - transform = iosUtils.applyRotateTransform(transform, this.rotateX, this.rotateY, this.rotate); | ||
| 358 | + transform = iosNativeHelper.applyRotateTransform(transform, this.rotateX, this.rotateY, this.rotate); | ||
| 358 | 359 | transform = CATransform3DScale(transform, scaleX, scaleY, 1); | |
| 359 | 360 | this.ios.layer.transform = transform; | |
| 360 | 361 | if (!CATransform3DEqualToTransform(this.ios.layer.transform, transform)) { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -48,4 +48,4 @@ export function openUrl(location: string): boolean { | |||
| 48 | 48 | return false; | |
| 49 | 49 | } | |
| 50 | 50 | ||
| 51 | - mainScreenScale | ||
| 51 | + mainScreenScale = UIScreen.mainScreen.scale; | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -50,7 +50,8 @@ export function test_AnimatingProperties(done) { | |||
| 50 | 50 | .then(() => { | |
| 51 | 51 | //console.log("Animation finished."); | |
| 52 | 52 | // >> (hide) | |
| 53 | - assertIOSNativeTransformIsCorrect(label); | ||
| 53 | + const expectedIOSAffineTransform = "[-2, 2.4492935982947064e-16, -2.4492935982947064e-16, -2, 100, 100]"; | ||
| 54 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 54 | 55 | done(); | |
| 55 | 56 | // << (hide) | |
| 56 | 57 | }) | |
@@ -163,7 +164,8 @@ export function test_ChainingAnimations(done) { | |||
| 163 | 164 | .then(() => { | |
| 164 | 165 | //console.log("Animation finished"); | |
| 165 | 166 | // >> (hide) | |
| 166 | - assertIOSNativeTransformIsCorrect(label); | ||
| 167 | + const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]"; | ||
| 168 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 167 | 169 | done(); | |
| 168 | 170 | // << (hide) | |
| 169 | 171 | }) | |
@@ -192,7 +194,8 @@ export function test_ReusingAnimations(done) { | |||
| 192 | 194 | .then(() => { | |
| 193 | 195 | //console.log("Animation finished"); | |
| 194 | 196 | // >> (hide) | |
| 195 | - assertIOSNativeTransformIsCorrect(label); | ||
| 197 | + const expectedIOSAffineTransform = "[1, 0, 0, 1, 0, 0]"; | ||
| 198 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 196 | 199 | done(); | |
| 197 | 200 | // << (hide) | |
| 198 | 201 | }) | |
@@ -231,9 +234,10 @@ export function test_AnimatingMultipleViews(done) { | |||
| 231 | 234 | .then(() => { | |
| 232 | 235 | //console.log("Animations finished"); | |
| 233 | 236 | // >> (hide) | |
| 234 | - assertIOSNativeTransformIsCorrect(label1); | ||
| 235 | - assertIOSNativeTransformIsCorrect(label2); | ||
| 236 | - assertIOSNativeTransformIsCorrect(label3); | ||
| 237 | + const expectedIOSAffineTransform = "[1, 0, 0, 1, 200, 200]"; | ||
| 238 | + assertIOSNativeTransformIsCorrect(label1, expectedIOSAffineTransform); | ||
| 239 | + assertIOSNativeTransformIsCorrect(label2, expectedIOSAffineTransform); | ||
| 240 | + assertIOSNativeTransformIsCorrect(label3, expectedIOSAffineTransform); | ||
| 237 | 241 | done(); | |
| 238 | 242 | // << (hide) | |
| 239 | 243 | }) | |
@@ -367,7 +371,9 @@ export function test_AnimateTranslate(done) { | |||
| 367 | 371 | .then(() => { | |
| 368 | 372 | TKUnit.assertEqual(label.translateX, 100, "label.translateX"); | |
| 369 | 373 | TKUnit.assertEqual(label.translateY, 200, "label.translateY"); | |
| 370 | - assertIOSNativeTransformIsCorrect(label); | ||
| 374 | + | ||
| 375 | + const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]"; | ||
| 376 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 371 | 377 | done(); | |
| 372 | 378 | }) | |
| 373 | 379 | .catch((e) => { | |
@@ -382,7 +388,9 @@ export function test_AnimateScale(done) { | |||
| 382 | 388 | .then(() => { | |
| 383 | 389 | TKUnit.assertEqual(label.scaleX, 2, "label.scaleX"); | |
| 384 | 390 | TKUnit.assertEqual(label.scaleY, 3, "label.scaleY"); | |
| 385 | - assertIOSNativeTransformIsCorrect(label); | ||
| 391 | + | ||
| 392 | + const expectedIOSAffineTransform = "[2, 0, 0, 3, 0, 0]"; | ||
| 393 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 386 | 394 | done(); | |
| 387 | 395 | }) | |
| 388 | 396 | .catch((e) => { | |
@@ -396,7 +404,9 @@ export function test_AnimateRotate(done) { | |||
| 396 | 404 | label.animate({ rotate: 123, duration: 5 }) | |
| 397 | 405 | .then(() => { | |
| 398 | 406 | TKUnit.assertEqual(label.rotate, 123, "label.rotate"); | |
| 399 | - assertIOSNativeTransformIsCorrect(label); | ||
| 407 | + | ||
| 408 | + const expectedIOSAffineTransform = "[-0.54463903501502708, 0.83867056794542405, -0.83867056794542405, -0.54463903501502708, 0, 0]"; | ||
| 409 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 400 | 410 | done(); | |
| 401 | 411 | }) | |
| 402 | 412 | .catch((e) => { | |
@@ -433,6 +443,7 @@ function animateExtentAndAssertExpected(along: "height" | "width", value: Percen | |||
| 433 | 443 | expectedNumber, | |
| 434 | 444 | `PercentLength.toDevicePixels(${inputString}) should be "${expectedNumber}" but is "${observedNumber}"` | |
| 435 | 445 | ); | |
| 446 | + | ||
| 436 | 447 | assertIOSNativeTransformIsCorrect(label); | |
| 437 | 448 | }); | |
| 438 | 449 | } | |
@@ -524,7 +535,9 @@ export function test_AnimateTranslateScaleAndRotateSimultaneously(done) { | |||
| 524 | 535 | TKUnit.assertEqual(label.scaleX, 2, "label.scaleX"); | |
| 525 | 536 | TKUnit.assertEqual(label.scaleY, 3, "label.scaleY"); | |
| 526 | 537 | TKUnit.assertEqual(label.rotate, 123, "label.rotate"); | |
| 527 | - assertIOSNativeTransformIsCorrect(label); | ||
| 538 | + | ||
| 539 | + const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]"; | ||
| 540 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 528 | 541 | done(); | |
| 529 | 542 | }) | |
| 530 | 543 | .catch((e) => { | |
@@ -539,7 +552,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) { | |||
| 539 | 552 | .then(() => { | |
| 540 | 553 | TKUnit.assertEqual(label.translateX, 100, "label.translateX"); | |
| 541 | 554 | TKUnit.assertEqual(label.translateY, 200, "label.translateY"); | |
| 542 | - assertIOSNativeTransformIsCorrect(label); | ||
| 555 | + | ||
| 556 | + const expectedIOSAffineTransform = "[1, 0, 0, 1, 100, 200]"; | ||
| 557 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 543 | 558 | ||
| 544 | 559 | return label.animate({ scale: { x: 2, y: 3 }, duration: 5 }); | |
| 545 | 560 | }) | |
@@ -548,7 +563,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) { | |||
| 548 | 563 | TKUnit.assertEqual(label.translateY, 200, "label.translateY"); | |
| 549 | 564 | TKUnit.assertEqual(label.scaleX, 2, "label.scaleX"); | |
| 550 | 565 | TKUnit.assertEqual(label.scaleY, 3, "label.scaleY"); | |
| 551 | - assertIOSNativeTransformIsCorrect(label); | ||
| 566 | + | ||
| 567 | + const expectedIOSAffineTransform = "[2, 0, 0, 3, 100, 200]"; | ||
| 568 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 552 | 569 | ||
| 553 | 570 | return label.animate({ rotate: 123, duration: 5 }); | |
| 554 | 571 | }) | |
@@ -558,7 +575,9 @@ export function test_AnimateTranslateScaleAndRotateSequentially(done) { | |||
| 558 | 575 | TKUnit.assertEqual(label.scaleX, 2, "label.scaleX"); | |
| 559 | 576 | TKUnit.assertEqual(label.scaleY, 3, "label.scaleY"); | |
| 560 | 577 | TKUnit.assertEqual(label.rotate, 123, "label.rotate"); | |
| 561 | - assertIOSNativeTransformIsCorrect(label); | ||
| 578 | + | ||
| 579 | + const expectedIOSAffineTransform = "[-1.0892780700300542, 1.6773411358908481, -2.5160117038362722, -1.6339171050450814, 100, 200]"; | ||
| 580 | + assertIOSNativeTransformIsCorrect(label, expectedIOSAffineTransform); | ||
| 562 | 581 | done(); | |
| 563 | 582 | }) | |
| 564 | 583 | .catch((e) => { | |
@@ -620,9 +639,9 @@ export function test_PlayPromiseIsRejectedWhenAnimationIsCancelled(done) { | |||
| 620 | 639 | animation.cancel(); | |
| 621 | 640 | } | |
| 622 | 641 | ||
| 623 | - function assertIOSNativeTransformIsCorrect(view: viewModule.View) { | ||
| 642 | + function assertIOSNativeTransformIsCorrect(view: viewModule.View, expectedIOSAffineTransformString?: string) { | ||
| 624 | 643 | if (view.ios) { | |
| 625 | - var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view); | ||
| 644 | + var errorMessage = (<any>animation)._getTransformMismatchErrorMessage(view, expectedIOSAffineTransformString); | ||
| 626 | 645 | if (errorMessage) { | |
| 627 | 646 | TKUnit.assert(false, errorMessage); | |
| 628 | 647 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments