2013-05-13 58 views
0

我正在開發該應用程序中的一個應用程序從NSArray獲取圖像並將其存儲到ImageView中,該圖像視圖垂直滾動並且每個頁面都具有單個圖像。從數組中獲取圖像隨機更改

我想要顯示應用程序每次啓動時的隨機圖像。每次都有圖像隨機播放。

我試過這個。

UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 490)]; 


    [scrollView setPagingEnabled:YES]; 


    [scrollView setShowsHorizontalScrollIndicator:NO]; 


    NSArray *imageArray=[[NSArray alloc]initWithObjects:@"image1",@"image2",@"image3",@"image4",@"image5", nil]; 

    for(i=0; i< [imageArray count];i++) 
    { 

     int i=arc4random()%[imageArray count]; // For Shuffle the images 

     NSString *imageName=[imageArray objectAtIndex:i]; 


     NSString *fullImageName=[NSString stringWithFormat:@"%@.jpeg",imageName]; 


     int padding=25; 


     CGRect imageViewFrame=CGRectMake(scrollView.frame.size.width*i+padding, scrollView.frame.origin.y, scrollView.frame.size.width-2*padding, scrollView.frame.size.height); 


     UIImageView *imageView=[[UIImageView alloc]initWithFrame:imageViewFrame]; 

     [imageView setImage:[UIImage imageNamed:fullImageName]]; 


     [imageView setContentMode:UIViewContentModeScaleAspectFit]; 

     [scrollView addSubview:imageView]; 

    } 

    CGSize scrollViewSize=CGSizeMake(scrollView.frame.size.width*[imageArray count], scrollView.frame.size.height); 


    [scrollView setContentSize:scrollViewSize]; 

    [self.view addSubview:scrollView]; 

圖像顯示正確,但不是隨意改變。 幫我拿出這 在此先感謝。

+0

只是爲了代碼清晰起見 - 取代當地的「我」變量名稱(在for循環中聲明的名稱)。 – Stavash 2013-05-13 08:55:06

+0

你的代碼似乎沒有錯,只是嘗試@Stavash建議,可能是這樣的問題 – Bonnie 2013-05-13 08:59:02

+0

圖像隨機生成,但一個圖像滾動顯示2次。 – Jitendra 2013-05-13 09:04:36

回答

0

你的算法有一個嚴重的缺陷,你不能確保你沒有選擇兩次相同的索引。另外,適當地編寫代碼的緣故,將「我」用別的東西:

int randIdx=arc4random()%[imageArray count]; // For Shuffle the images 
NSString *imageName=[imageArray objectAtIndex:randIdx]; 
+0

............. :) – Rajneesh071 2013-05-13 09:11:46

+0

@Stavash先生圖像現在隨機生成,但一個圖像滾動顯示2次。 – Jitendra 2013-05-13 09:14:29

+1

因爲對於你的循環的每一次迭代,你在同一個範圍內選擇一個隨機數,所以爲什麼不會有重複?如何使用一個NSMutableSet來存儲你沒有使用過的索引,並在你去的時候刪除它們? – Stavash 2013-05-13 09:15:55

0

嘗試不同的東西的名稱

int randNo=arc4random()%[imageArray count];