zoomToRect奇怪的行为

时间:2011-03-23 11:05:44

标签: iphone cocoa-touch ios uiscrollview zoom

我遇到了zoomToRect功能的问题。我有一个包含视图的滚动视图。当用户点击视图时,我会向其中启动缩放。它的工作原理除外,当帧的y位置高于2389时,该功能在2389°位置缩放到相应的帧。

以下是我使用的代码:

-(void) launchZoomInAnimationInView:(UIView*) cellView; {
    // Get the rect corresponding to the clicked cell
    CGRect zoomedFrame = [self.zoomScrollView convertRect:cellView.frame fromView:cellView.superview];  

    // Zoom to the rect
    [self.zoomScrollView zoomToRect:zoomedFrame animated:YES];

    // Display for debugging
    [ViewToolkit showFrame:zoomedFrame inView:self.zoomScrollView];
    NSLog (@"Zoom on frame %@ with contentSize %f", NSStringFromCGRect(zoomedFrame), self.zoomScrollView.contentSize.height);
}

函数showframe向我显示我计算的帧位于正确的位置(我在屏幕上显示一个红色矩形)。

NSLog显示内容大小足够高:

  

使用contentSize 10337.759766缩放框架{{100,3021.6},{230.4,307.2}}。

在动画结束时,我显示了scrollView的边界,它给了我{{100, 2389 },{768,1024}},而不是{{100, 3021.6 },{768,1024}} 我真的不明白。对于2389以上的任何值,我总是得到一个2389年位置的结束帧。当contentSize不同时,此值不会更改。

请注意,在启动此功能之前,我没有更改scrollView的zoomScale。

1 个答案:

答案 0 :(得分:0)

问题是由于我的viewForZoomingInScrollView函数返回了scrollview本身,而它应该返回scrollView的子节点。

请在此处查看完整答案:https://devforums.apple.com/message/406487

根据Apple论坛上的讨论,似乎Apple API中存在一个错误,所以我们不应该在viewForZoomingInScrollView中返回scrollView。