UIScrollView со страницей галереи изображений - Есть проблемы с памятью? А как насчет масштабирования? - PullRequest
0 голосов
/ 07 января 2020

Я хочу иметь такую ​​же функциональность, как в приложении "Фотографии" на iPhone в моем Scrollview. Таким образом, я добавил все изображения в свой скролл-вью вот так, и это прекрасно работает.

-(void)prepareScrollView
{
    for(int i =0;i<[self.layoverPhotoAssets count];i++){
        PHAsset *asset = self.layoverPhotoAssets[i];
        UIImageView *imageView = [[UIImageView alloc] init];
        int x = self.scrollView.frame.size.width * i;
        imageView.frame = CGRectMake(x, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
        imageView.contentMode = UIViewContentModeScaleAspectFit;

        PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
        options.resizeMode = PHImageRequestOptionsResizeModeFast;
        options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; //I only want the highest possible quality
        options.synchronous = NO;
        options.networkAccessAllowed = YES;
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:self.scrollView.frame.size contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *result, NSDictionary *info) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if(result){
                imageView.image = result;
            }
        });
        }];

        [self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width * (i + 1), self.scrollView.frame.size.height)];
        //self.scrollView.contentSize= ;
        [self.scrollView addSubview:imageView];
    }
}

Однако у меня есть 2 вопроса: 1. Таким образом, все изображения будут загружены одновременно. Память мудрая, это довольно плохо. Как я могу улучшить это, не ухудшая пользовательский опыт? 2. Как я могу сделать само изображение масштабируемым?

...