1

ImageArray を使用して UIScrollview に取り組んでいます。スクロールとページングは​​機能していますが、各画像をズームできません。画像Scrollviewの私のコードは以下の通りです:-

#define IMAGE_WIDTH 320

#define IMAGE_HEIGHT 360

 - (void)viewDidLoad
 {
[super viewDidLoad];

// TODO – fill with your photos
NSArray *photos = [[NSArray arrayWithObjects:
                    [UIImage imageNamed:@"photo1m.jpg"],
                    [UIImage imageNamed:@"photo2m.jpg"],
                    [UIImage imageNamed:@"photo3m.jpg"],
                    [UIImage imageNamed:@"photo4m.jpg"],
                    nil] retain];
// note that the view contains a UIScrollView in aScrollView

    int i=0;
    for ( NSString *image in photos )
    {
       UIImage *images = [photos objectAtIndex:i];
       imageView = [[UIImageView alloc] initWithImage:images];
       imageView.contentMode = UIViewContentModeScaleAspectFit;
       imageView.clipsToBounds = YES;

       imageView.frame = CGRectMake( IMAGE_WIDTH * i++, 0, IMAGE_WIDTH, IMAGE_HEIGHT);

       [self.scrollViewimages addSubview:imageView];
      [imageView release];
     }
      self.scrollViewimages.contentSize = CGSizeMake(IMAGE_WIDTH*i, IMAGE_HEIGHT);
      self.scrollViewimages.delegate = self; 
 }

すべての画像のピンチ ズームの実装を支援する必要があります。助けてください !

4

2 に答える 2

6
for ( NSString *image in photos )
    {
       UIImage *images = [photos objectAtIndex:i];
       imageView = [[UIImageView alloc] initWithImage:images];
       imageView.contentMode = UIViewContentModeScaleAspectFit;
       imageView.clipsToBounds = YES;
       imageView.tag = 1;

       UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake( IMAGE_WIDTH * i++, 0, IMAGE_WIDTH, IMAGE_HEIGHT)];
       scrollView.delegate = self;
       scrollView.maximumZoomScale = 3.0f
       imageView.frame = scrollView.bounds;
       [scrollView addSubview:imageView];
       [imageView release];

       [self.scrollViewimages addSubview:scrollView];

     }

UIScrollViewDelegate にデリゲート メソッドを実装します。

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [scrollView viewWithTag:1];
}
于 2012-10-30T03:32:31.720 に答える
1
#define IMAGE_FOR_ZOOM_TAG (1)

次のカスタム メソッドを呼び出す

-(void) setupProductImageViewContainerUI
{
    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];

    if(self.dimView)
    {
        for(UIView *subView in self.dimView.subviews)
            [subView removeFromSuperview];
        [self.dimView removeFromSuperview]; self.dimView = nil;
    }

    self.dimView = [[UIView alloc] initWithFrame:window.bounds];
    self.dimView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.5];
    self.dimView.userInteractionEnabled = YES;
    [window addSubview:self.dimView];

    self.imgContainerView = [[UIView alloc] init];
    self.imgContainerView.frame = CGRectMake(0, 0, window.frame.size.width, window.frame.size.height);
    self.imgContainerView.backgroundColor = [UIColor whiteColor];
    [self.dimView addSubview:self.imgContainerView];

    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:window.bounds];
    mainScrollView.pagingEnabled = YES;
    mainScrollView.delegate = self;
    mainScrollView.showsHorizontalScrollIndicator = NO;
    mainScrollView.showsVerticalScrollIndicator = NO;
    [self.imgContainerView addSubview:mainScrollView];
    CGRect innerScrollFrame = mainScrollView.bounds;

    IndexOfSlidingPhoto = 0;
    for(int i = 0 ; i < listOfImages.count; i++)
    {
        UIImage *imgProduct = [GeneralClass getImageForSreenFromScreenTable:@"" orCustomTable:@"" OrDefaultImga:[listOfImages objectAtIndex:i]];
        UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:imgProduct];
        imageForZooming.frame = CGRectMake(0, 0, window.frame.size.width, window.frame.size.height);
        imageForZooming.tag = IMAGE_FOR_ZOOM_TAG;
        imageForZooming.contentMode = UIViewContentModeScaleAspectFit;

        UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame];
        pageScrollView.minimumZoomScale = 1.0f;
        pageScrollView.maximumZoomScale = 20;
        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 < listOfImages.count -1)
            innerScrollFrame.origin.x += innerScrollFrame.size.width;

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


    [window bringSubviewToFront:self.dimView];
}

#pragma Mark -
#pragma Mark - UIScrollView Delegate Methods

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return [scrollView viewWithTag:IMAGE_FOR_ZOOM_TAG];
}
于 2014-06-11T10:14:33.733 に答える