исчезать в коллекции миниатюр на UIScrollView по одному - PullRequest
0 голосов
/ 05 июня 2011

У меня есть большая коллекция миниатюр, которые я отображаю в UIScrollView, и я бы хотел, чтобы они постепенно появлялись по одному.Прямо сейчас они все исчезают вместе после того, как все они загружены в представление прокрутки, просто скрывая и показывая представление прокрутки.Это нормально, но может потребоваться много времени для загрузки 500 изображений.

Я пробовал несколько различных вариантов того, что я хотел бы использовать с помощью фоновых потоков.

Я думал, что это будетработать точно, но не повезло.У меня есть NSMutableArray всех моих UIImageViews, которые я добавил в представление прокрутки, поэтому, как только они все на месте и размер прокрутки уменьшен, я вызываю:

    [self performSelectorInBackground:@selector(addThumbnailToScrollView) withObject:values];

    -(void) addThumbnailToScrollView: (NSDictionary *) aDictionary {

        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

        NSLog(@"Collection Item Count: %i, imageViewCount: %i", [self.collectionItems count],[self.imageViews count]);


            UIImage *img = [Helpers getThumbnailImage:[aDictionary valueForKey:@"PhotoName"] withManufacturer:manufacturerID];
            [(UIImageView*)[self.imageViews objectAtIndex:[[aDictionary valueForKey:@"i"] intValue]] setImage:img];   
            [(UIImageView*)[self.imageViews objectAtIndex:[[aDictionary valueForKey:@"i"] intValue]] setAlpha:0];   
            [UIView beginAnimations:@"fade" context:nil];
         [(UIImageView*)[self.imageViews objectAtIndex:[[aDictionary valueForKey:@"i"] intValue]] setAlpha:1];
            [UIView commitAnimations];


    [pool drain];
}

Анимация UIView вызывает сбой, потому что этоя не думаю, что это сделано до того, как объекты будут выпущены.Даже когда я удаляю бит анимации, они все равно появляются на экране большими группами, а не 1 на 1.

1 Ответ

0 голосов
/ 05 июня 2011

Вы можете попробовать это

- (void) animateTumbs: (NSInteger) index {index ++;if ([self.imageViews count]

[UIView animateWithDuration:0.2
                 animations:^{ 
                     [(UIImageView*)[self.imageViews objectAtIndex:[[aDictionary valueForKey:@"i"] intValue]] setAlpha:1];
                 }
                 completion:^(BOOL finished){ 
                     [self animateTumbs:index];
                 }];
}

Или вы можете попробовать:

[self executeSelectorInBackground: @selector (addThumbnailToScrollView) withObject: values ​​afterDelay: 0.2];

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...