だから私は、UIScrollView
もちろんオーバーライドするビューコントローラに委任されたズーム機能を持っています:
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView { ... etc ...
そしてすべてが機能します(ズームとスクロール)。
次に、グリッドのガイドとして機能することを目的とした、他の2つのUIScrollViewをトップレベルのビューに追加しました(たとえば、M $ Excelの行と列を考えてみてください)。
したがって、scrollViewのサブビューの1つにはUILabel
sの行(A、B、C、D ...)が含まれ、もう1つは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);
}
}
そして、すべてが機能します。
私はscrollViewのズーム機能を次のように接続しました:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
if (scrollView == self.scrollView) {
self.verticalGuideScrollView.zoomScale = scrollView.zoomScale;
self.horizontalGuideScrollView.zoomScale = scrollView.zoomScale;
}
}
ガイドビューのサブビュー(つまり、s)を実際に拡大したくない場合を除いて、これも問題UILabel
なく機能します。スケーリング(拡大または縮小)せずにズームすることで得られる変換動作が必要なだけです。
メインのscrollViewにを追加し、UIPinchGestureRecognizer
それを使用してガイドのスクロールビューのすべてのサブビューを変換することで解決策を想像できますが、おそらくここの誰かがもっと簡単なものを思い付くことができます。