CATransform3DScale (CATransform3D t, CGFloat sx, CGFloat sy, CGFloat sz)
If you want to flip horizontally, you should not specify a vector value in CATransform3DMakeRotation (). Instead, you just want to control the scale of the x axis.
By flipping it horizontally, you should:
self.transform = CATransform3DScale(CATransform3DMakeRotation(0, 0, 0, 0),
-1, 1, 1);
If you want to flip it back to the beginning, follow these steps:
self.transform = CATransform3DScale(CATransform3DMakeRotation(0, 0, 0, 0),
1, 1, 1);
Addition
A shorter version will save you one operation. To flip:
self.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
To return to normal:
self.transform = CATransform3DMakeRotation(0, 0, 1, 0);