2

因此,我UIScrollView将缩放功能委托给了视图控制器,该视图控制器当然会覆盖:

- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView { ... etc ...

一切正常(它缩放和滚动)。

然后我把它提高了一个档次,在顶层视图中添加了另外两个 UIScrollView,其目的是充当网格的指南(例如 M$ Excel 中的行和列)。

因此,scrollView 的一个子视图包含一行UILabels(A、B、C、D...),另一个相同,只是UILabels 在列中(1、2、3、4...)。如果这有帮助,请想象一个棋盘。

现在我将主 scrollView 的垂直和水平滚动连接到指南滚动视图,如下所示:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == self.scrollView) {
       self.verticalGuideScrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
       self.horizontalGuideScrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
    }
}

一切正常。

我像这样连接了滚动视图的缩放功能:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    if (scrollView == self.scrollView) {
        self.verticalGuideScrollView.zoomScale = scrollView.zoomScale;
        self.horizontalGuideScrollView.zoomScale = scrollView.zoomScale;
    }
}

这也很好用,除了我实际上不希望它放大UILabel指南视图中的子视图(即 s),我只想要来自缩放而不缩放(放大或缩小)的翻译行为。

我可以通过向UIPinchGestureRecognizer主滚动视图添加 a 并使用它来翻译指南滚动视图中的所有子视图来设想一个解决方案,但也许这里有人可以想出一些更简单的方法。

4

0 回答 0