0

ALAssetLibrary からフェッチした後に画像を表示する際に問題があります。私の問題は、画像が 1 つある場合は問題なく表示されますが、複数の画像がある場合は最後の画像のみが表示され、前の画像は表示されません。ループに問題があり、if を見つけることができませんでした。

誰かがこれを解決したら教えてください。

mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 70, self.view.frame.size.width, self.view.frame.size.height)];

mainScrollView.pagingEnabled = YES;

mainScrollView.delegate=self;
mainScrollView.showsHorizontalScrollIndicator = NO;
mainScrollView.showsVerticalScrollIndicator = NO;

CGRect innerScrollFrame = mainScrollView.bounds;

for (NSInteger i = 0; i < images.count; i++) {

    imageForZooming=[[UIImageView alloc]init];

    if ([maincheck isEqualToString:@"YES"]) {
        NSURL*url=[NSURL URLWithString:[images objectAtIndex:i]];

        [library assetForURL:url resultBlock:^(ALAsset *asset)
         {
             UIImage  *copyOfOriginalImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
             [imageForZooming setImage:copyOfOriginalImage];
         }
            failureBlock:^(NSError *error)
         {
             NSLog(@"the error is %@",error);
         }];
    }

    else{
        [imageForZooming setImageWithURL:[NSURL URLWithString:[images objectAtIndex:i]]];
    }

    UITapGestureRecognizer*t=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(showblack:)];

    t.numberOfTapsRequired=1;

    imageForZooming.userInteractionEnabled=YES;

    [imageForZooming addGestureRecognizer:t];

    imageForZooming.frame=CGRectMake(0, 50, 320, 200);

    imageForZooming.contentMode=UIViewContentModeScaleAspectFit;

    imageForZooming.tag = VIEW_FOR_ZOOM_TAG;

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

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

[self.view addSubview:mainScrollView];
4

1 に答える 1

0

ここでは、スクロール ビューのコンテンツ サイズを設定していません。

[scrollView setContentSize:CGSizeMake(numberOfImages * scrollView.frame.size.width, scrollView.frame.size.width)];

また、scrollView に追加する前に、各 imageView の X オフセット (水平スクロールの場合) を変更する必要があります。

また、ここではどの scrollView にも imageForZooming を追加しませんでした。

こちらを参照して、 ALAssetLibraryから画像を読み込みます。

于 2015-08-20T10:34:13.097 に答える