Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

igorladessa

macrumors newbie
Original poster
Dec 10, 2012
6
0
I need to scroll over 200 images. I ahve found a tutorial that says that I can over 1000 images with the tutorial code. The tutorial is:

http://soulwithmobiletechnology.blogspot.com.br/2011/05/how-to-load-1000s-of-uiimageview-on.html?m=1

I followed the tutorial, but when I use 100 images aprox..the app crash with memory warning.

My code is here:

http://pastebin.com/BKmsdXxf

I have already with UIIMagenamed, with initWithContentsOfFile

but the problem persist. Pls , help me!
 

Ides

macrumors member
Mar 27, 2012
95
0
Well how big are the images you're loading? If they are very large then they will cause memory warnings, if you're loading 100+.
 

PhoneyDeveloper

macrumors 68040
Sep 2, 2008
3,114
93
Use a tableview if you can. Otherwise set things up so that only a small number of image views exist at a time. Unload the image views when they scroll off.
 

dejo

Moderator emeritus
Sep 2, 2004
15,982
452
The Centennial State
Those are quite large. You might want to consider creating thumbnail versions for display most of the time.

Use a tableview if you can. Otherwise set things up so that only a small number of image views exist at a time. Unload the image views when they scroll off.
Yeah, UICollectionView (iOS 6) might be a good solution, if UITableView is not, because it works similar in that cells are reused.
 

igorladessa

macrumors newbie
Original poster
Dec 10, 2012
6
0
solved!!

I release all ImageViews and load the current and next imageView, when scrolling!


Code:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint scrollOffset=scrollView.contentOffset;
int pagAtual = scrollOffset.x/scroll.frame.size.width;
if(pagAtual != 0) { //always release all imageViews and load the current and next
for(int iCnt = 0; iCnt < [scroll.subviews count]; iCnt++) {
    UIView *viewLiberar = [scroll.subviews objectAtIndex:iCnt];
 if ([viewLiberar isKindOfClass:UIImageView.class]) {
    [viewLiberar removeFromSuperview];
     viewLiberar = nil;
   }
 }
}

if(pageOnScrollView < ((int)scrollOffset.x/scroll.frame.size.width))
 { 

 //load the next page
[self loadNextPage:(pagAtual)];
[self loadNextPage:(pagAtual + 1)];
 }
else if(pageOnScrollView > ((int)scrollOffset.x/scroll.frame.size.width))
  {
  if(pagAtual>0)[self loadNextPage:((int)scrollOffset.x/scroll.frame.size.width)-1];
    }

     pageOnScrollView=scrollOffset.x/scroll.frame.size.width;
      }

It works!
 
Last edited by a moderator:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.