Не уверен, что я точно понимаю, что вы делаете, но я могу вам сказать, что преобразования не накапливаются, если вы не добавите существующее преобразование рекурсивно.
Например, скажем, у вас есть преобразование, которое поворачивает объект на 45 градусов, и вы хотите использовать его для вращения объекта. При первом вызове объект поворачивается на 45 градусов, но не поворачивается в последующие моменты. Это потому, что вы просто устанавливаете одно и то же точное преобразование снова и снова. 45-градусное преобразование всегда одинаково.
Чтобы заставить объект вращаться, вы должны вызвать 45-градусное преобразование, затем вы должны взять полученное преобразование из первой операции и повернуть его на 45 градусов. Затем возьмите результаты этого и поверните его на 45 градусов.
Вам нужно сделать что-то вроде:
picker.cameraViewTransform =CGAffineTransformScale(picker.cameraViewTransform, zoomfactor);
Таким образом, ваши трансформации будут накапливаться, и вы сможете увеличивать и уменьшать масштаб.