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
Swift 4 Extension (thanks to Robin Macharg's answer)
extension CGAffineTransform
{
var xScale: CGFloat { return sqrt(a * a + c * c) }
var yScale: CGFloat { return sqrt(b * b + d * d) }
var rotation: CGFloat { return CGFloat(atan2(Double(b), Double(a))) }
var xOffset: CGFloat { return tx }
var yOffset: CGFloat { return ty }
}
Note that CGFloat equals a Double on most platforms, thus conversions need to be to Double.