今回はこれに拡大機能を追加する。
UIScrollViewを使った拡大
画像を拡大するのは簡単で UIScrollView上に UIImageViewを追加し、UIScrollViewDelegateの所定のメソッドでこの UIImageViewを返すだけで良い。
[参考] UIScrollViewDelegate Protocol Reference - viewForZoomingInScrollView:
実装
サンプルコードでは既に UIScrollView上に UIImageViewを載せてそこで画像を表示しているのでデリゲートメソッドを実装するだけで良い。ただEasyGalleryViewControllerは既にベースとなる UIScrollViewの UIScrollViewDelegate先になっているので、できれば別のインスタンスをデリゲート先にしたい。また今後実装する予定の画像のダブルタップ操作のハンドリングを考えて今回は UIImageViewのサブクラスを用意し、そこをデリゲート先とした。
@interface CustomImageView : UIImageView実装メソッドはこれだけ。{ } @end
@implementation CustomImageView -(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self; } @end
前回のコードで UIImageViewを使用している箇所をすべてこのCustomImageViewに差し替える。
- UIImageView* imageView = [[UIImageView alloc] initWithFrame:imageViewFrame]; + CustomImageView* imageView = [[CustomImageView alloc] initWithFrame:imageViewFrame];
これで終わり。
動作確認
動かしてみよう。まず初期表示。
拡大してみる。いい感じだ。
拡大したままフリック。スクロールも問題なく行われる。
ソースコードは GitHubからどうぞ
EasyGallery at 2010-09-10 from xcatsan's iOS-Sample-Code - GitHub
参考情報
Scroll View Programming Guide for iOS: Basic Zooming Using the Pinch Gestures
Responses
Leave a Response