2015-11-29 2 views
0

Мое приложение для iPhone Содержит 170 изображений. Я прочитал их в массиве, и в цикле добавьте изображение в видоискатель, затем поместите изображение «Просмотр» в виде подпрограммы просмотра прокрутки.UIScrollView Lazy Загрузка изображений

При работе в моем приложении слишком много памяти 700mb. Я попытался уменьшить размер изображений, но это не сработало.

Один из моих друзей сказал, что я должен добавить только изображения # 1 и # 2. Когда пользовательский блок прокручивается до изображения № 1, тогда отображается только изображение № 2. Затем снимок № 1 до удалите из средства просмотра изображения и добавьте изображение № 3.

Он говорит, что таким образом я могу поддерживать нормальное потребление памяти. Но я не понимаю, как это сделать?

Не могли бы вы помочь с примером? Заранее спасибо.

Не используя UICollectionView

Вот мой код:

- (void)addImageViewToScrollView { 
    _assetsArray = [[NSMutableArray alloc] init]; 
    for (int j = 0; j < 170; j++) { 
     [_assetsArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d",j]]]; 
    } 

    //scrollView add subview ImageView 
    for (int i = 0; i < [_assetsArray count]; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width *i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     _imageView = [[UIImageView alloc]init]; 
     _imageView.image = [_assetsArray objectAtIndex:i]; 
     _imageView.frame = frame; 
     [self.scrollView addSubview:_imageView]; 
    } 
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.assetsArray.count, self.scrollView.frame.size.height); 
} 

-

enter image description here

ответ

0

Используйте UICollectionViewController, чтобы решить эту проблему.

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

Collection Views работает очень похоже на виды стола.

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

0

Похоже, вы пытаетесь добавить 170 изображения на UIScrollView с помощью UIImageView. Почему бы не использовать выделенные UITableView's или UICollectionView's? Объект Reusable Cell предназначен для поддержания потребления памяти во время работы. Напомним, что

  1. У вас есть 170 ImageViews (_assetsArray); дорого потребление
  2. У вас есть 170 изображений

Versus, используя UITableView или UICollectionView

  1. У вас есть 1 ImageView в ячейке с 170 строками
  2. У вас есть DataSource 170 изображений были загружены
  3. Ваша ячейка будет повторно циклически, когда она должна отображаться, соответствует Dat aSource

Кроме того, для поддержки множества изображений существуют хорошие библиотеки для уменьшения кеша изображений. Попробуйте использовать SDWebImage или FastImageCache.Мне лично нравится FIC, но вам может понадобиться понять эту концепцию.

Смежные вопросы