Добавление нескольких UIImages для включенного подкачки UIScrollView из ALAssetLibrary

У меня проблема с отображением изображений после выборки из ALAssetLibrary. Моя проблема в том, что если есть одно изображение, то оно подходит, но если есть несколько изображений, то появляется только последнее изображение, но не предыдущие изображения. Я полагаю, что есть проблема в цикле и не могу найти.

Пожалуйста, дайте мне знать, если кто-нибудь разрешит это.

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];

1 ответ

Здесь вы не установили размер содержимого представления прокрутки.

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

А также вы должны изменить смещение X (если горизонтальная прокрутка) для каждого imageView перед добавлением в scrollView.

Кроме того, вы не добавили imageForZooming к любому scrollView здесь.

Посмотрите здесь, чтобы загрузить изображения из ALAssetLibrary.

Другие вопросы по тегам