IOS Core Animation-Objekte sind nicht frei
Mache ich eine image-gallery-Anwendung in IOS, wo Benutzer können durchsuchen Sie die Galerie-Bilder. Ich verwendet eine Auslagerungsdatei aktiviert UIScrollView
wie in diese Beispiel-code. Alles funktioniert. Aber das problem ist, während ich durch die Seiten Blättern, die Anzahl der core-animation-Objekte erstellt werden und diese nie Abrufe.
|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
mithilfe von Instrumenten, die ich beobachtet habe, dass für jeden paging-4-6 Objekte erstellt werden. Aber Sie sind nicht folden, auch wenn ich Links die View Controller
Ich habe versucht, das entfernen der Animationen aus den Schichten mit der folgenden Methode nach jedem paging. aber es funktioniert nicht.
- (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]];
}
}
}
Bitte helfen Sie mir, wenn jemand weiß, wie man die core-animation-Objekte.
- Jungs, sieht aus wie die core-animation-Objekte sind nicht das Ergebnis eines paging-oder
UIpageView
. Innerhalb einer Seite, die ich in Bewegung bin einigeUILabel
s, um Sie zu positionieren. Das ist, wo die animation stattfindet. Aber diese Animationen sind nicht frei, wenn ich entladen von der Seite. Ich poste die Antwort, Wenn ich könnte Sie loslassen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand heraus, dass animation, verursacht durch die inneren Seiten.
Innerhalb der
pageViewController
(viewController
das HinzugefügtscrollView
als eine Seite) aufviewWillDisappear:(BOOL)animated
Methode, die ich Hinzugefügt dieseres wurde das problem behoben.