Nano Hash - криптовалюты, майнинг, программирование

iOS ScrollView показывает только одно подвид с изображением

У меня есть UIScrollView, в который я хочу загрузить список изображений из flickr. Затем я хочу, чтобы фотографии отображались так же, как в родном фотоприложении для iPhone, где вы прокручиваете фотографии.

Вот мой код

- (void)viewDidLoad
{
    [super viewDidLoad];

    for (int i = 0; i < self.urlArray.count; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        UIView *subview = [[UIView alloc] initWithFrame:frame];


        [self returnImageFromFlickr:[self.urlArray objectAtIndex:i]];

        UIImageView *imageView = self.largePhoto;

        [subview addSubview:imageView];
        [self.scrollView addSubview:subview];

    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.urlArray.count, self.scrollView.frame.size.height);
}

-(void)returnImageFromFlickr:(NSURL *)url {



    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [self.largePhoto setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {



        [self.largePhoto setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

    }];

}

Что происходит, отображается только последнее изображение.

Я попробовал ваше решение, как я его понял, и получил это. Это не поднимет фото. Просто белый экран. Плюс предупреждение в методе returnImageFromFlicrk по адресу

[imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

говоря, что сильный захват «imageView» в этом блоке, вероятно, приведет к циклу сохранения

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

   /*for (int i = 0; i < self.urlArray.count; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        UIView *subview = [[UIView alloc] initWithFrame:frame];


        [self returnImageFromFlickr:[self.urlArray objectAtIndex:i]];

        UIImageView *imageView = self.largePhoto;

        [subview addSubview:imageView];
        //subview.backgroundColor = [colors objectAtIndex:i];
        [self.scrollView addSubview:subview];

    }*/

    for (int i = 0; i < self.urlArray.count; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        UIImageView *imageView = [[UIImageView alloc] init];
        [self returnImageFromFlickr:[self.urlArray objectAtIndex:i] imageview:imageView];

        [self.scrollView addSubview:imageView];

    }

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.urlArray.count, self.scrollView.frame.size.height);
}

-(void)returnImageFromFlickr:(NSURL *)url imageview:(UIImageView *)imageView {
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
        [imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

    }];


}

Ответы:


1

Вы не устанавливаете правильные параметры для панели содержимого прокрутки, поэтому все изображения, которые вы хотите, не отображаются в scrollView. Попробуйте обновить панель содержимого ScrollView, чтобы она соответствовала ширине всех изображений. Нравиться

self.scrollView.contentSize = CGSizeMake (Ширина, Высота);

в этом случае высота будет высотой одного изображения, а ширина будет (ширина одного изображения * общее количество изображений)

27.02.2013
  • Я думал, что этот код делает это self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.urlArray.count, self.scrollView.frame.size.height); 27.02.2013
  • Да, вы делаете, но что вы устанавливаете для ширины и высоты. для ширины вы должны попробовать ширину subView * self.urlArray.count, а для высоты вы должны попробовать высоту subView. 27.02.2013

  • 2

    Вы перезаписываете self.largePhoto, вам нужно установить свой imageView в returnImageFromFlickr

    попробуй это

    UIImageView *imageView = [[UIImageView alloc] init];
    [self returnImageFromFlickr:[self.urlArray objectAtIndex:i] imageview:imageView];
    

    а также

    -(void)returnImageFromFlickr:(NSURL *)url imageview:(UIImageView *)imageView {
        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
        [imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
            [imageView setImage:image];
    
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    
    }];
    

    }

    27.02.2013
  • проверьте мой измененный код выше. Я все еще не могу заставить его работать. Я правильно применил ваше решение. 28.02.2013

  • 3

    Все, что мне нужно было сделать, это переместить код из viewDidLoad в viewDidApear.

    28.02.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..