iOS 相当于这些转换
iOS equivalent of these transformations
我正在尝试将一些转换从 Android 移植到 iOS。
具体来说,我正在尝试执行以下操作(在 Android 中):
matrix.reset();
matrix.postTranslate(xOffset,yOffset);
matrix.postScale(scaleX, scaleY);
本质上我是在尝试翻译和缩放。 iOS 中这段代码的等效项是什么?我已经尝试过以下方法:
CATransform3D scaleTransform = CATransform3DMakeScale(scaleX, scaleY,1);
CATransform3D translateTransform = CATransform3DMakeTranslation(xOffset,yOffset,0);
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
以上两者并不等价。任何调试它的指针都会有帮助。谢谢
在 Android 代码段中,您的矩阵运算是 Translate * Scale,但您的 iOS 代码段使用 Scale * Translate。
矩阵乘法不是可交换的,所以顺序是 important.Try 颠倒乘法顺序,而不是:
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
使用:
CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform)
我正在尝试将一些转换从 Android 移植到 iOS。 具体来说,我正在尝试执行以下操作(在 Android 中):
matrix.reset();
matrix.postTranslate(xOffset,yOffset);
matrix.postScale(scaleX, scaleY);
本质上我是在尝试翻译和缩放。 iOS 中这段代码的等效项是什么?我已经尝试过以下方法:
CATransform3D scaleTransform = CATransform3DMakeScale(scaleX, scaleY,1);
CATransform3D translateTransform = CATransform3DMakeTranslation(xOffset,yOffset,0);
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
以上两者并不等价。任何调试它的指针都会有帮助。谢谢
在 Android 代码段中,您的矩阵运算是 Translate * Scale,但您的 iOS 代码段使用 Scale * Translate。
矩阵乘法不是可交换的,所以顺序是 important.Try 颠倒乘法顺序,而不是:
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
使用:
CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform)