xcode 6 zoomToRect动画问题

Kev*_*ann 6 xcode uiscrollview ios8

我有一个照片库应用程序有一个问题为ios 8做好准备.图像显示在UIPageViewController中,每个页面都有一个带有自定义UIScrollView类的视图.这就像Apples PhotoScroller Sample(https://developer.apple.com/library/ios/samplecode/PhotoScroller/Introduction/Intro.html)

我添加了一个UITapGestureRecognizer进行双击.这是我用于缩放的代码:

- (void)scrollViewDoubleTapped:(UITapGestureRecognizer*)recognizer {
if (self.minimumZoomScale == self.maximumZoomScale) return;
if (self.zoomScale == self.minimumZoomScale) didDoubleTap = NO;

CGPoint pointInView = [recognizer locationInView:_zoomView];

CGFloat newZoomScale;
if (!didDoubleTap && self.zoomScale <= self.minimumZoomScale) {
    newZoomScale = self.zoomScale * 2.5f;
    newZoomScale = MIN(newZoomScale, self.maximumZoomScale);
    didDoubleTap = YES;
}
else {
    newZoomScale = self.minimumZoomScale;
    didDoubleTap = NO;
}

CGSize scrollViewSize = self.bounds.size;

CGFloat w = scrollViewSize.width / newZoomScale;
CGFloat h = scrollViewSize.height / newZoomScale;
CGFloat x = pointInView.x - (w / 2.0f);
CGFloat y = pointInView.y - (h / 2.0f);

CGRect rectToZoomTo = CGRectMake(x, y, w, h);
[self zoomToRect:rectToZoomTo animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

当我在xcode 5.1上完美运行它时,这就像在任何其他照片应用程序中一样.但是当我在xcode 6 gm上运行/构建它时,缩放的动画变得很奇怪.首先将内容偏移设置为将来的位置,然后放大.因此图像会向上或向下跳跃.

有人之前有过这个问题或有任何想法吗?

Kev*_*ann 10

好吧,我找到了一个解决方法.问题是layoutsubviews缩放前的动画调用.所以现在我做自己的动画

[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^ {
    inTransition = YES;
    [self zoomToRect:rectToZoomTo animated:NO];
    inTransition = NO;
    [self layoutSubviews];
} completion:nil];
Run Code Online (Sandbox Code Playgroud)

但如果有人能告诉我为什么要这样做会很好.

编辑: 如果有人仍然感兴趣,请将代码layoutsubviews移至scrollViewDidZoom:(UIScrollView *)scrollView.因此,没有必要使用奇怪的动画来缩放缩放也可以顺利进行.