因此,我UIScrollView
将缩放功能委托给了视图控制器,该视图控制器当然会覆盖:
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView { ... etc ...
一切正常(它缩放和滚动)。
然后我把它提高了一个档次,在顶层视图中添加了另外两个 UIScrollView,其目的是充当网格的指南(例如 M$ Excel 中的行和列)。
因此,scrollView 的一个子视图包含一行UILabel
s(A、B、C、D...),另一个相同,只是UILabel
s 在列中(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 并使用它来翻译指南滚动视图中的所有子视图来设想一个解决方案,但也许这里有人可以想出一些更简单的方法。