hachinoBlog

hachinobuのエンジニアライフ

UIScrollViewに配置した複数のSubviewをピンチイン、ピンチアウトで全て拡大縮小する方法

UIScrollViewのデリゲートである

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

を使えば自動でScrollViewに配置したViewもピンチイン、ピンチアウトに合わせて拡大・縮小されるが
このデリゲートメソッドは1つのViewしか返せない。
この場合は配置するView達を直接ScrollViewに載せるのではなく、ScrollViewの上にScrollViewの範囲と同じサイズのViewを置いてやって
そのView上に拡大、縮小したいView達を載せてあげればOK。
当然、viewForZoomingInScrollViewで返すViewはScrollViewの上に載せたViewを返す。

ここが凄く分かりやすかった
http://dev.classmethod.jp/smartphone/uisrollview-subview-scaling/

ちなみに複数のViewをScrollView上にきっちりと座標を指定して配置していた場合、
ScrollViewのzoomScaleを取得して座標を計算していたが、ScrollViewの上にViewをかまして、その上に複数のViewを配置する方式だと
zoomScaleを考慮せずにそのまま指定座標でかましているViewの上に配置すればOKです。