我遇到了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。
答案 0 :(得分:0)
问题是由于我的viewForZoomingInScrollView函数返回了scrollview本身,而它应该返回scrollView的子节点。
请在此处查看完整答案:https://devforums.apple.com/message/406487
根据Apple论坛上的讨论,似乎Apple API中存在一个错误,所以我们不应该在viewForZoomingInScrollView中返回scrollView。