1. ホーム
  2. objective-c

UIScrollViewのコンテンツの可視レクトの取得

2023-11-20 10:47:42

質問

表示されているビューのコンテンツのうち、実際に画面に表示されている矩形(CGRect)を調べるにはどうしたらよいでしょうか。

myScrollView.bounds

上のコードはズームがないときは動作しますが、ズームを許可するとすぐに、1以外のズームスケールでは壊れてしまいます。

明確にするために、私はスクロールビューのコンテンツの可視領域を含むCGRectを、コンテンツに対して相対的に欲しいのです。(たとえば、ズーム スケール 2 の場合、rect のサイズはスクロール ビューのサイズの半分になり、ズーム スケール 0.5 の場合、それは 2 倍になります)。

どのように解決するのですか?

私自身の質問に答えること、ほとんどはJim Doveyの回答に感謝します。

CGRect visibleRect;
visibleRect.origin = scrollView.contentOffset;
visibleRect.size = scrollView.bounds.size;

float theScale = 1.0 / scale;
visibleRect.origin.x *= theScale;
visibleRect.origin.y *= theScale;
visibleRect.size.width *= theScale;
visibleRect.size.height *= theScale;

主な違いは、visibleRect のサイズが scrollView.bounds.size よりも、むしろ scrollView.contentSize ではなく、コンテンツ ビューのサイズである です。また、計算を少し簡略化し、さらに isless() の用途がよくわからなかったので、それが大きくなるたびにコードが壊れてしまいます。