I managed to implement zoomToRect using some CA3DTransforms. I insert the code here if anyone is interested.
I needed to keep a reference to the original scrollView frame for this.
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)); }];
silviupop
source share