iOS相当于这些转换

时间:2015-10-05 17:04:12

标签: android ios coordinate-transformation

我正在尝试将一些转换从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)

以上两者并不相同。任何调试这个的指针都会有所帮助。感谢。

1 个答案:

答案 0 :(得分:0)

在Android代码段中,您的矩阵操作是Translate * Scale,但您的iOS代码段使用了Scale * Translate。

Matrix mulitplication不是可交换的,所以顺序很重要。尝试颠倒乘法顺序,即代替:

CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)

使用:

CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform)