2013-09-26 17 views
5

Sto creando un'applicazione galleria di immagini in IOS in cui l'utente può sfogliare le immagini della galleria. Ho utilizzato un cercapersone abilitato UIScrollView come nel codice di esempio this. Tutto funziona. Ma il problema è che mentre scorrono le pagine, il numero degli oggetti dell'animazione core viene creato e non vengono mai rilasciati.Gli oggetti IOS Core Animation non vengono rilasciati


|Graph---|Category------------------|Live Bytes---|#Living----|#Transient 

|1-------|All Heap & Anonymous VM |58.69 MB-----|270335-----|828951 
|0-------|All Heap Allocations------|15.30 MB-----|269980-----|826939 
|0-------|All Anonymous VM----------|43.39 MB-----|355--------|2012  
|0-------|VM: CoreAnimation---------|27.01 MB-----|222--------|58 
|0-------|VM: CG image--------------|7.40 MB------|3----------|189  
|0-------|VM: UITextFieldLabel------|4.30 MB------|25---------|0 

utilizzando strumenti ho osservato che per ogni paging vengono creati 4-6 oggetti. Ma non verranno rilasciati anche se ho lasciato il View Controller

Ho provato a rimuovere le animazioni dai livelli utilizzando il seguente metodo dopo ogni impaginazione. ma non funziona.

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 

CGFloat pageHeight = CGRectGetHeight(self.ImageSlider.frame); 
NSUInteger page = floor((self.ImageSlider.contentOffset.y - pageHeight/2)/pageHeight) + 1; 
currentPage = page; 
delegate.currentPage = page; 
[delegate refreshTags]; 

[self unloadPageFromScrollView:currentPage-2]; 
[self unloadPageFromScrollView:currentPage+2]; 

[self loadScrollViewWithPage:currentPage - 1]; 
[self loadScrollViewWithPage:currentPage]; 
[self loadScrollViewWithPage:currentPage + 1]; 

} 

- (void)unloadPageFromScrollView:(NSUInteger)page 
{ 
    @autoreleasepool { 
     if (page > docList.count-1) { 
      return; 
     } 

    if ((NSNull *)[self.viewControllers objectAtIndex:page] != [NSNull null]) { 
     PageViewController1 *controller = [self.viewControllers objectAtIndex:page]; 
     for (CALayer* layer in [self.view.layer sublayers]) { 
       [layer removeAllAnimations]; 
     } 
     [controller.view removeFromSuperview]; 

     [self.viewControllers replaceObjectAtIndex:page withObject:[NSNull null]]; 

     } 
    } 

} 

Per favore aiutatemi se qualcuno sa come rilasciare quegli oggetti dell'animazione core.

+0

Sembra che gli oggetti dell'animazione core non siano il risultato del paging o di 'UIpageView'. All'interno di una pagina sto spostando alcuni 'UILabel's per posizionarli. Ecco dove si verifica l'animazione. Ma quelle animazioni non vengono rilasciate quando scarico la pagina. Pubblicherò la risposta Se potessi farli rilasciare. –

risposta

8

Rilevato quell'animazione causata dalle pagine interne.

All'interno della pageViewController (viewController che ha aggiunto alla scrollView come una pagina) su viewWillDisappear:(BOOL)animated metodo che ho aggiunto questo

for (CALayer* layer in [self.view.layer sublayers]) 
    { 
     [layer removeAllAnimations]; 
    } 

ha risolto il problema.

Problemi correlati