I read through the Transforms documentation in the Quartz 2D Programming Guide. In it there appears to be two ways to make transformations. One way is through modifying the Current Transformation Matrix (CTM). It has methods like the following:
CGContextTranslateCTM
CGContextRotateCTM
CGContextScaleCTM
The other way is to use Affine transforms. It has methods like the following:
CGAffineTransformTranslate
CGAffineTransformRotate
CGAffineTransformScale
The docs state
The affine transform functions available in Quartz operate on matrices, not on the CTM.
But I don't understand how that affects me practically. It seems like I can get the same result using either method. When should I use the CTM transforms and when should I use the Affine transforms?