You can apply multiple transforms by stacking them on top of each other.
var t = CGAffineTransform.identity
t = t.translatedBy(x: 100, y: 300)
t = t.rotated(by: CGFloat.pi / 4)
t = t.scaledBy(x: -1, y: 2)
// ... add as many as you want, then apply it to to the view
imageView.transform = t
Or more compactly (but not necessarily as readable):
imageView.transform = CGAffineTransform.identity.translatedBy(x: 100, y: 300).rotated(by: CGFloat.pi / 4).scaledBy(x: -1, y: 2)
This series of transforms produces the image on the right:
Thanks to this answer for teaching me how to do it.
Notes
The order in which you apply the transforms matters. For example, if the transforms were done in the opposite order it would produce the following result.
t = t.scaledBy(x: -1, y: 2)
t = t.rotated(by: CGFloat.pi / 4)
t = t.translatedBy(x: 100, y: 300)
See also
This answer has been tested with Swift 4
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…