Search code examples
cocoacalayercatransform3d

Converting a CATransform3D to an NSString


I would like to be able to do something similar to NSStringFromCGAffineTransform for a CATransform3D. Are there any built in functions for this? Or ways of using existing APIs?

For example:

[[layer valueForKey:@"transform"] description]

nearly does it, but outputs the transform values as hex.


Solution

  • CATransform3D is a struct of CGFloats, named m11, m12, m13, ... (right click on CATransform3D in Xcode and click "Jump to Definition"). Knowing this, you could create a function that will behave in a similar manner to the other NSStringFromX() functions.

    NSString *NSStringFromCATransform3D(CATransform3D transform) {
        return [NSString stringWithFormat:@"[%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f]",
                transform.m11, transform.m12, transform.m13, transform.m14,
                transform.m21, transform.m22, transform.m23, transform.m24,
                transform.m31, transform.m32, transform.m33, transform.m34,
                transform.m41, transform.m42, transform.m43, transform.m44];
    }