我正在尝试将一些转换从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)
以上两者并不相同。任何调试这个的指针都会有所帮助。感谢。
答案 0 :(得分:0)
在Android代码段中,您的矩阵操作是Translate * Scale,但您的iOS代码段使用了Scale * Translate。
Matrix mulitplication不是可交换的,所以顺序很重要。尝试颠倒乘法顺序,即代替:
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
使用:
CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform)