Your code looks fine, but I know that the UIImagePicker is resource consuming.
I think it is more optimized to do the instantiation only once. Put this in your viewWillAppear method:
self.imagePickerController = [[UIImagePickerController alloc] init];
self.imagePickerController.delegate = self;
self.imagePickerController.allowsEditing = YES;
self.imagePickerController.sourceType = sourceType;
Then when you want to present it use:
[self presentViewController:self.imagePickerController animated:YES completion:nil];
I noticed that it is way faster to present it this way. Let me know if it solved your issue.