2016-11-10 3 views
1

Ich habe Xcode/Swift schon seit ein paar Wochen benutzt und arbeite gerade an meinem ersten kleinen iOS-Spiel. Nichts zu kompliziert, nur um das Programm zu lernen und Spaß zu haben. Was mich zu meinem Problem führt ...Eine Funktion in der eingestellten Zeit wiederholen Intervalle

... Ich möchte im Wesentlichen das Hintergrundbild, das ich in meiner App habe, zufällig ändern (aus einer Reihe von Werten in einem Array), aber zeitlich abgestimmt. So ändert sich beispielsweise "alle 2 Sekunden das Hintergrundbild".

Das ist, was ich bis jetzt habe, ich habe einige Sachen über NSTimer gesehen, aber ich bin nicht sicher, wie man es mit dem, was ich bereits habe, umsetzt.

@IBOutlet weak var backview: UIImageView! 

let BackNames = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"] 

let BackValue = Int(arc4random_uniform(7)) 

backview.image = UIImage (named: BackNames [BackValue]) 

Also ja, wie ich sagte, ich weiß, wie man es macht einen Zufallswert für den Hintergrund wählen, aber es geschieht nur, wenn ich meine Taste tippen. frage mich, wie man die Zeitfunktion mit meinem arc4random integrieren kann.

Danke!

Antwort

1

dies für die Animation von Bild Versuchen:

var imgListArray :NSMutableArray = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"] 
for countValue in 1...7 
    { 

     var strImageName : String = "Back \(countValue).png" 
     var image = UIImage(named:strImageName) 
     imgListArray .addObject(image) 
    } 

    self.imageView.animationImages = imgListArray; 
    self.imageView.animationDuration = 1.0 // change as per your requirement 
    self.imageView.startAnimating() 

verweisen: https://stackoverflow.com/a/24364736/3901620

+0

Hey vielen Dank für die Antwort! Ich habe es versucht, aber ich bekomme immer den Fehler (in Bezug auf die letzten drei Zeilen) "Wert des Typs 'ViewController' hat kein Mitglied 'imageView'" –

+0

Dies ist ein Rückansicht Objekt von Imageview, aber ich habe vergessen, den Namen zu ändern. Es ist kein Mitglied von UIviewcontroller, aber Sie müssen definieren. – KKRocks

+0

wow schnelle antwort! Ich habe die "ImageView" in den letzten drei Zeilen in Backview geändert und das scheint das Problem zu beheben, aber ein neues Problem ist aufgetreten w.r.t. ; self.imageView.animationImages = imgListArray; der Fehler sagt "Werttyp NSMutableArray kann nicht Typ UIImage zuweisen" –

1

eine Farbe ändern Funktionen schreiben und verwenden Sie den Funktionswähler nach Verzögerung durchzuführen.

func ChangeColor() { 
    BackValue = Int(arc4random_uniform(7)) 

    backview.image = UIImage (named: BackNames [BackValue]) 

    self.perform(#selector(ChangeColor), with: nil, afterDelay: 2.0) 
} 

den Auswähler Verwendung

self.classForCoder.cancelPreviousPerformRequests(withTarget: self) 
+0

Vielen Dank für die Antwort! Ich hatte gehofft, dass das funktionieren würde, nur indem ich es lese. Ich verstand, was jede Zeile sagte, aber ... Ich bekomme immer die Fehlermeldung "#Selektor kann nicht auf lokale Funktion verweisen 'Farbe ändern'" –

0

In Objective-C abbrechen;

[NSTimer scheduledTimerWithTimeInterval:2.0 
    target:self 
    selector:@selector(timerCalled:) 
    userInfo:nil 
    repeats:YES]; 

-(void)timerCalled 
{ 
    [UIView transitionWithView:textFieldimageView 
        duration:0.2f 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        imageView.image = newImage; 
       } completion:nil]; 
} 
Verwandte Themen