2016-06-13 5 views
1

Leider habe ich 36 UIImages und muss für jeden ein zufälliges Bild erstellen.Zufällige Bilder zu (vielen) Bildansichten

Meine 6 Bilder sind benannt;

Also, ich möchte ein zufälliges Bild zu meinen 36 verschiedenen UIImages setzen. Was ist der beste Weg, dies zu tun? Eine Anordnung? Hier ist mein "Versuch" bisher.

var images: [UIImage] = [ 
UIImage(named: "Owl1")!, 
UIImage(named: "Owl2")!, 
UIImage(named: "Owl3")!, 
UIImage(named: "Owl4")!, 
UIImage(named: "Owl5")!, 
UIImage(named: "Owl6")! 
] 

var randomUIImage = [Image1, Image2, Image3, Image4, Image5...] 
     randomUIImage.shuffleInPlace() 

randomUIImage[0].image = images[0] 
randomUIImage[1].image = images[1] 

Aber ich erkennen dies nicht funktionieren, und ich kann nicht diesen Code für alle 36 Bilder machen ... Wer eine bessere Idee? ;-)

Antwort

3

Tipp zu halten: Sie verwenden können, Ein Bereich + Karte, um ein Array Ihrer Bilder zu erstellen.

let images = (1...6).map { UIImage(named: "Owl\($0)") } 

(1...6) erzeugt eine Sammlung von Ints, von 1 bis 6 (6 einschließlich) und mit map schaffen wir eine neue Instanz von UIImage für jeden Int, sie für die Namensgebung mit - da Sie, um Ihre Bilder in dem Namen Es ist praktisch. Es ist wie eine Schleife zu tun und eine neue intance von UIImage auf ein Array innerhalb der Schleife angehängt, um einen Index für die Namensgebung mit: „owl1“, „OWL2“ usw.

Wenn Sie auch Ihre UIImageViews in einem Array haben, Sie können die Bilder mit einer Schleife zuweisen.

Hier ist ein Beispiel (ich nicht auf Xcode überprüfen, aber es sollte zu schließen, was Sie brauchen):

for view in imageViewsArray { // the array with the 36 imageViews 
    // a random index for the array of 6 images 
    let randomIndex = Int(arc4random_uniform(UInt32(images.count)) 
    // assign the randomly chosen image to the image view 
    view.image = images[randomIndex] 
} 
+0

sind Sie immer 1-upping mich eric;) –

+0

Nicht mit diesem Code vertraut, Wie kann ich es verwenden, um die Bilder tatsächlich auf die Bildansichten anzuwenden? :-) –

+0

BTW, du weißt, dass ich nur 6 Bilder (Owl) und 36 Bildansichten im Storyboard habe? :-) –

3

Sie können ein Array von Bildnamen haben, und eine Reihe von Bildern, sie ..

var imageNames:[String] = ["Owl1", "Owl2"....etc] 
var owlImages:[UIImage] = [] 

Dann hängen Sie zufällig die Bilder

for index in 0...imageNames.count - 1 { 
    var randomInt = Int(arc4random_uniform(UInt32(imageNames.count)) //a random int from 0 to the size of your array 
    owlImages.append(UIImage(named: imageNames[randomInt] //add the random image to the array 
} 
Verwandte Themen