2012-04-11 13 views
2

iPhoneで写真アプリを複製しようとしています。意味、複数の画像を含むスクロールビュー、および各画像をズームイン/ズームアウトするために挟むことができます。UIScrollviewに複数の画像があり、ピンチしてズームする

Apple ScrollViewSuiteのサンプルコードは、スクロールビュー内の1つの画像のみを扱います。私は、複数の画像では、画像をスクロールすることが予測できなくなることを発見しました。また、ズームするためにピンチした後でビューが中心になりません。

私はstackoverflowを検索し、thisを見つけました。

ただし、可能であれば詳細をお伝えしたいと思います。スクロールビューのデリゲート関数には何を書いていますか?

助けてください(可能であれば、コード例)。

ありがとうございました!

+1

どのようにAppleの[PhotoScroller](http://www.google.co.in/url?sa=t&rct=j&q=photoscroller%20apple%20sample&source=web&cd=1&ved=0CCYQFjAA&url=http%3A%2Fについて%2Fdeveloper.apple.com%2Flibrary%2Fios%2Fsamplecode%2FPhotoScroller%2FIntroduction%2FIntro.html&ei = B0OFT7CzEY_SrQeJ2rXSBg&usg = AFQjCNHK6ZW1WphEOlE6XEu7OhfRJ7Zi1g)アプリケーション? –

答えて

5

これは私が動作することがわかったものです。ページングとズームを含む複数の画像をサポートします。楽しい!

#define VIEW_FOR_ZOOM_TAG (1) 

@implementation SVViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
    mainScrollView.pagingEnabled = YES; 
    mainScrollView.showsHorizontalScrollIndicator = NO; 
    mainScrollView.showsVerticalScrollIndicator = NO; 

    CGRect innerScrollFrame = mainScrollView.bounds; 

    for (NSInteger i = 0; i < 3; i++) { 
     UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:[UIImage imageNamed: 
     [NSString stringWithFormat:@"page%d", i + 1]]]; 
     imageForZooming.tag = VIEW_FOR_ZOOM_TAG; 

     UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame]; 
     pageScrollView.minimumZoomScale = 1.0f; 
     pageScrollView.maximumZoomScale = 2.0f; 
     pageScrollView.zoomScale = 1.0f; 
     pageScrollView.contentSize = imageForZooming.bounds.size; 
     pageScrollView.delegate = self; 
     pageScrollView.showsHorizontalScrollIndicator = NO; 
     pageScrollView.showsVerticalScrollIndicator = NO; 
     [pageScrollView addSubview:imageForZooming]; 

     [mainScrollView addSubview:pageScrollView]; 

     if (i < 2) { 
      innerScrollFrame.origin.x += innerScrollFrame.size.width; 
     } 
    } 

    mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x + 
    innerScrollFrame.size.width, mainScrollView.bounds.size.height); 

    [self.view addSubview:mainScrollView]; 
} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return [scrollView viewWithTag:VIEW_FOR_ZOOM_TAG]; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL)shouldAutorotate { 
    return NO; 
} 

@end