xcode - xcode 6 zoomToRect动画问题

标签 xcode uiscrollview ios8

我有一个照相馆应用程序,但在准备iOS 8时遇到了问题。
图像显示在UIPageViewController中,并且每个页面都有一个带有自定义UIScrollView类的 View 。就像苹果的PhotoScroller示例(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];
}

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

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

最佳答案

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

[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^ {
    inTransition = YES;
    [self zoomToRect:rectToZoomTo animated:NO];
    inTransition = NO;
    [self layoutSubviews];
} completion:nil];

但如果有人能告诉我为什么我必须这样做,那将是很好的。

编辑:
如果仍然有兴趣,请将代码从layoutsubviews移到scrollViewDidZoom:(UIScrollView *)scrollView。因此,不需要怪异的动画即可轻松缩放。

关于xcode - xcode 6 zoomToRect动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803292/

相关文章:

ios - ios中uiscrollview的底部刷新控件

ios - 应用程序启动时自动布局更改 View 的高度

iOS 8 工作正常,iOS 7 由于 View 转换影响布局约束而无法同时满足约束

iphone - 在 xcode 应用程序中的何处存储基本 url 字符串?

UIView 中的 iOS UIScrollView

ios - 从 ScrollView 连续滚动到嵌套 Collection View

ios8 - 折叠的主/详细信息 UISplitViewController : detecting detail View Controller dismissal?

ios - NSView setNeedsDisplay 不可用

iphone - 如何显示电子邮件已发送通知 ipad

swift - 如何使用 SpriteKit AR 在 Swift 中的 SKScene 上创建覆盖 SCNScene?