Scaling to zero should be avoided in iOS as the underlying system won't be able to decompose the resulting affine matrix, but in cases of 0 we were setting it to 1, we will now set it to 1e-6.

This commit is contained in:
Panayot Cankov
2017-04-12 10:04:02 +03:00
parent 4069bcea02
commit 078bd48909

View File

@ -234,13 +234,13 @@ export class View extends ViewCommon {
public updateNativeTransform() { public updateNativeTransform() {
let translateX = layout.toDeviceIndependentPixels(Length.toDevicePixels(this.translateX || 0, 0)); let translateX = layout.toDeviceIndependentPixels(Length.toDevicePixels(this.translateX || 0, 0));
let translateY = layout.toDeviceIndependentPixels(Length.toDevicePixels(this.translateY || 0, 0)); let translateY = layout.toDeviceIndependentPixels(Length.toDevicePixels(this.translateY || 0, 0));
let scaleX = this.scaleX || 1; let scaleX = this.scaleX || 1e-6;
let scaleY = this.scaleY || 1; let scaleY = this.scaleY || 1e-6;
let rotate = this.rotate || 0; let rotate = this.rotate || 0;
let newTransform = CGAffineTransformIdentity; let newTransform = CGAffineTransformIdentity;
newTransform = CGAffineTransformTranslate(newTransform, translateX, translateY); newTransform = CGAffineTransformTranslate(newTransform, translateX, translateY);
newTransform = CGAffineTransformRotate(newTransform, rotate * Math.PI / 180); newTransform = CGAffineTransformRotate(newTransform, rotate * Math.PI / 180);
newTransform = CGAffineTransformScale(newTransform, scaleX === 0 ? 0.001 : scaleX, scaleY === 0 ? 0.001 : scaleY); newTransform = CGAffineTransformScale(newTransform, scaleX, scaleY);
if (!CGAffineTransformEqualToTransform(this.nativeView.transform, newTransform)) { if (!CGAffineTransformEqualToTransform(this.nativeView.transform, newTransform)) {
let updateSuspended = this._isPresentationLayerUpdateSuspeneded(); let updateSuspended = this._isPresentationLayerUpdateSuspeneded();
if (!updateSuspended) { if (!updateSuspended) {