【问题标题】:iOS equivalent of these transformationsiOS 等价于这些转换
【发布时间】:2015-10-05 17:04:12
【问题描述】:

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


    【解决方案1】:

    在Android sn-p中,你的矩阵运算是Translate * Scale,而你的iOS sn-p使用的是Scale * Translate。

    矩阵乘法不是可交换的,因此顺序很重要。尝试颠倒乘法顺序,即代替:

    CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform)
    

    使用:

    CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform)
    

    【讨论】:

    • 是否对图层幂等应用相同的变换?
    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    相关资源
    最近更新 更多