2

だから私は、UIScrollViewもちろんオーバーライドするビューコントローラに委任されたズーム機能を持っています:

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

そしてすべてが機能します(ズームとスクロール)。

次に、グリッドのガイドとして機能することを目的とした、他の2つのUIScrollViewをトップレベルのビューに追加しました(たとえば、M $ Excelの行と列を考えてみてください)。

したがって、scrollViewのサブビューの1つにはUILabelsの行(A、B、C、D ...)が含まれ、もう1つは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);
    }
}

そして、すべてが機能します。

私はscrollViewのズーム機能を次のように接続しました:

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

ガイドビューのサブビュー(つまり、s)を実際に拡大したくない場合を除いて、これも問題UILabelなく機能します。スケーリング(拡大または縮小)せずにズームすることで得られる変換動作が必要なだけです。

メインのscrollViewにを追加し、UIPinchGestureRecognizerそれを使用してガイドのスクロールビューのすべてのサブビューを変換することで解決策を想像できますが、おそらくここの誰かがもっと簡単なものを思い付くことができます。

4

0 に答える 0