I found a similar question about getting just the rotation, but as I understand scaling and rotating work different in the transform matrix.
Matrixes are not my strength
It's an old (pre-Swift) question so for Swift folk arriving here based on a search for CGAffineTransform here's a Swift 3 convenience extension based on the other answers:
extension CGAffineTransform {
var xScale: CGFloat { return sqrt(self.a * self.a + self.c * self.c) }
var yScale: CGFloat { return sqrt(self.b * self.b + self.d * self.d) }
var rotation: CGFloat { return CGFloat(atan2(Double(self.b), Double(self.a))) }
// .tx and .ty are already available in the transform
}
[Edit: Updated rotation to use Doubles in light of the comment. Thx!]