0

我需要一些帮助来制作while statement. 我的动画中有不同的图像。但我不想在动画后显示相同的图像。

前任。现在它是如何工作的:image1 显示 -> image3 显示 -> image3 显示。

我希望它始终是一个新的图像显示。

- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];


int interval = 5+(arc4random() % 6);

int section = 0;
int row = (arc4random() % self.jsonDict.count);


NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];
[NSTimer scheduledTimerWithTimeInterval:interval
                                 target:self
                               selector:@selector(updateCells:)
                               userInfo:indexPath
                                repeats:NO];

    NSLog(@"seconds: %d", interval);
    NSLog(@"row: %d", row);}



- (void)updateCells:(NSTimer *)timer {



NSIndexPath *indexPath = [timer userInfo];
NSObject *obj = [_jsonDict objectAtIndex:indexPath.row];
NSLog(@"array: %@", obj);

UIImage *img = [self randomImageWithObject:obj];

NSString *title = [obj valueForKey:@"title"];
NSLog(@"array: %@", title);

CollectionCell *cell = (CollectionCell *)[self.collectionView cellForItemAtIndexPath:indexPath];

[UIView transitionWithView:cell
                  duration:1.0f
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{
                   cell.collectionImageView.image = img;
                } completion:nil];



int interval = 5+(arc4random() % 6);
int section = 0;
int row = (arc4random() % [_jsonDict count]);

NSLog(@"speedeee: %d", interval);
NSLog(@"row: %d", row);

NSIndexPath *indexPath2 = [NSIndexPath indexPathForRow:row inSection:section];



//CollectionCell *newCell = (CollectionCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
[NSTimer scheduledTimerWithTimeInterval:interval
                                 target:self
                               selector:@selector(updateCells:)
                               userInfo:indexPath2
                                repeats:NO];}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [_jsonDict count];}-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{


CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ReuseID" forIndexPath:indexPath];

NSObject *obj = [_jsonDict objectAtIndex:indexPath.row];

//NSLog(@"object: %@", obj);

NSArray *images = [obj valueForKey:@"images"];
NSString *imageName = images[0];
//NSLog(@"name: %@", imageName);

cell.collectionImageView.image = [UIImage imageNamed:imageName];


[self cellTitleAndBackground:cell indexPath:indexPath];

return cell;}

- (UIImage *)randomImageWithObject:(NSObject *)obj{
// Random image for cells



NSArray *images = [obj valueForKey:@"images"];
NSInteger randomNumber = arc4random() % [images count];

return [UIImage imageNamed:[images objectAtIndex:randomNumber]];}
4

2 回答 2

1

我想要的东西继续动画然后不需要在 ios 中创建 while 循环

在 UIImageView 有一些属性,你可以这样使用

UIImageView *imageView ;
NSArray *imagesArray ;
[imageView setAnimationImages:imagesArray];
[imageView setAnimationDuration:time];
[imageView setAnimationRepeatCount:count];
于 2013-09-12T09:56:00.343 回答
0

对于收集,您应该使用:

indexPath.item

代替

indexPath.row

在此处阅读更多信息(TableView 的行,CollectionView 的项目):

https://developer.apple.com/library/ios/documentation/uikit/reference/NSIndexPath_UIKitAdditions/Reference/Reference.html

于 2013-09-12T11:14:57.793 回答