Как рандомизировать изображения на странице прокрутки - PullRequest
1 голос
/ 05 августа 2011

У меня 12 изображений, сохраненных в массиве ...

Я использую это для вывода изображения.

scrollView = [[UIScrollView alloc] init];
    CGRect scrollFrame;
    scrollFrame.origin.x = 0;
    scrollFrame.origin.y = 0;  
    scrollFrame.size.width = WIDTH_OF_SCROLL_PAGE;
    scrollFrame.size.height = HEIGHT_OF_SCROLL_PAGE;

    scrollView = [[UIScrollView alloc] initWithFrame:scrollFrame];
    scrollView.bounces = YES;
    scrollView.pagingEnabled = YES;
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.delegate = self;
    scrollView.userInteractionEnabled = YES;

    NSMutableArray *slideImages = [[NSMutableArray alloc] init];
    [slideImages addObject:@"KODAK1.png"];
    [slideImages addObject:@"KODAK2.png"];
    [slideImages addObject:@"KODAK3.png"];
    [slideImages addObject:@"KODAK4.png"];
    [slideImages addObject:@"KODAK5.png"];
    [slideImages addObject:@"KODAK6.png"];
    [slideImages addObject:@"KODAK7.png"];
    [slideImages addObject:@"KODAK8.png"];
    [slideImages addObject:@"KODAK9.png"];
    [slideImages addObject:@"KODAK10.png"];
    [slideImages addObject:@"KODAK11.png"];
    [slideImages addObject:@"KODAK12.png"];

    srandom(time(NULL));
    int x = arc4random() % 12;
 for ( int i = 0 ;i<[slideImages count]; i++) {
        //loop this bit
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];
        imageView.frame = CGRectMake((WIDTH_OF_IMAGE * i) + LEFT_EDGE_OFSET, 0 , WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);
        [scrollView addSubview:imageView];
        [imageView release];
    }


    [scrollView setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([slideImages count] +0), HEIGHT_OF_IMAGE)];
    [scrollView setContentOffset:CGPointMake(0, 0)];
    [self.view addSubview:scrollView];
    [self.scrollView scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:YES]; 
    [super viewDidLoad]

Как вывести случайные изображения в UIView?как и там, есть 12 изображений, но каждый раз, когда я запускаю приложение, приложение будет запускаться со случайным изображением, но я все еще буду иметь возможность прокручивать изображения.Надеюсь, вы, ребята, поняли мой вопрос.

1 Ответ

3 голосов
/ 05 августа 2011

Вы можете «перемешивать» NSMutableArray каждый раз, когда создаете его:

 NSMutableArray *slideImages = [[NSMutableArray alloc] init];
 ...
 [slideImages shuffle];
 ...

Так что каждый раз, когда вы будете инициализировать UIScrollView с другим порядком.

shuffle нечасть SDK.Для примера реализации, пожалуйста, посмотрите на это :

@implementation NSMutableArray (Shuffling)

- (void)shuffle
{

  static BOOL seeded = NO;
  if(!seeded)
  {
    seeded = YES;
    srandom(time(NULL));
  }

    NSUInteger count = [self count];
    for (NSUInteger i = 0; i < count; ++i) {
        // Select a random element between i and end of array to swap with.
        int nElements = count - i;
        int n = (random() % nElements) + i;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}

@end

Импортируйте файл заголовка, содержащий объявление вашей категории:

@interface NSMutableArray (Shuffling)
   - (void)shuffle;
@end

везде, где вы хотите использоватьshuffle.

...