A little late to answer. But I am responding to future links. In fact, what you did in your code is only that you changed the scaling factor of the preview level, and not the base output connection. But in order for the zoom to be initially reflected in the captured output, you must also put a factor in your output mix. You can use something similar below:
-(void)sliderAction:(UISlider*)sender { AVCaptureConnection* connection = [self.photoOutput connectionWithMediaType:AVMediaTypeVideo];
And he has to do the trick.
Ideally, you should not make a change to connection.videoScaleAndCropFactor in your Slider routine and should put the code in your original capture routine and set it only once with a short-term slider value, just before calling the captureStillImageAsynchronouslyFromConnection method.
Hope this helps :)
source share