2016-07-28 20 views
7

Ich versuche, in einer schnellen Sprache auf mein ViewController-Grundbild zu setzen.Wie man Hintergrundbild in swift einstellt?

Ich verwende den folgenden Code ein:

self.view.backgroundColor = UIColor(patternImage: UIImage(named:”bg.png")!) 

Aber die App wird immer crash.It wie der Fehler zeigt

“fatal error: unexpectedly found nil while unwrapping an Optional value”(Because of the “!”)

+1

entfernen "!" Symbol oder überprüfen Sie den Nullwert, um den Hintergrund zu setzenImage –

+0

weil Bild nicht gefunden werden konnte, ist es Null und Sie versuchen, den Nullwert gewaltsam auszupacken. – iMuzahid

Antwort

16

Dieser Fehler, weil das Bild "bg.png" geworfen wird ist nicht vorhanden. Wenn Sie Bilder in den Ordner Assets.xcassets importieren, wird normalerweise die Dateierweiterung entfernt. Also versuchen Sie Folgendes:

self.view.backgroundColor = UIColor(patternImage: UIImage(named:"bg")!) 

Sie werden feststellen, dass der Hintergrund nicht wie erwartet aussehen, müssen Sie folgendes tun wie erklärt here:

 UIGraphicsBeginImageContext(self.view.frame.size) 
    UIImage(named: "bg")?.draw(in: self.view.bounds) 
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    self.view.backgroundColor = UIColor(patternImage: image) 
+1

Vielen Dank. Es funktioniert für mich. –

+0

@drdrdrr Könnten Sie bitte überprüfen Sie meine Frage http://stackoverflow.com/questions/43995059/how-to-add-images-for-different-screen-size-from-assets-xcassets-in-xcode-8? –

0

Update für swift3:

UIGraphicsBeginImageContext(self.frame.size) 

    UIImage(named: "bg").draw(in: self.bounds) 

    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 

    UIGraphicsEndImageContext() 

    backgroundColor = UIColor(patternImage: image) 
2

Versuchen Sie diese Swift4:

let backgroundImage = UIImageView(frame: UIScreen.main.bounds) 
backgroundImage.image = UIImage(named: "bg.png") 
backgroundImage.contentMode = UIViewContentMode.scaleAspectFill 
self.view.insertSubview(backgroundImage, at: 0) 
Verwandte Themen