Sono riuscito a implementare zoomToRect utilizzando alcuni CA3DTransforms. Inserirò il codice qui nel caso in cui qualcuno fosse interessato.
Ho dovuto mantenere un riferimento al frame originale di scrollView per farlo funzionare.
rect.origin.x = ((int)rect.origin.x) % (int)self.initialFrame.size.width;
float scale = MIN(self.initialFrame.size.width/rect.size.width,self.initialFrame.size.height/rect.size.height);
CGSize scaledFrameSize = CGSizeMake(self.initialFrame.size.width/scale, self.initialFrame.size.height/scale);
CGPoint middleOfFrame = CGPointMake(self.initialFrame.size.width/2 ,self.initialFrame.size.height/2);
CGPoint transformPoint = CGPointMake(rect.origin.x + scaledFrameSize.width/2,rect.origin.y + scaledFrameSize.height/2);
CGPoint offsetToCenter = CGPointMake((scaledFrameSize.width - rect.size.width)/2 * scale,(scaledFrameSize.height - rect.size.height)/ 2 * scale);
[UIView animateWithDuration:1 animations:^ {
self.layer.transform = CATransform3DConcat(CATransform3DConcat(CATransform3DConcat(CATransform3DMakeTranslation(middleOfFrame.x,middleOfFrame.y, 0),
CATransform3DMakeTranslation(-transformPoint.x, -transformPoint.y,0)),
CATransform3DMakeScale(scale, scale, 1)),
CATransform3DMakeTranslation(offsetToCenter.x, offsetToCenter.y, 0));
}];
Questo è geniale. – silviupop