2017-09-19 4 views
1

Ich möchte den Benutzer einen Hintergrund für die Hauptansicht der App wählen lassen. Ich würde gerne wissen, wie ich das für eine andere Ansicht tun kann, auch wenn die App getötet wird.Hintergrund einer anderen Ansicht in Swift festlegen

Ich dachte über Speichern des Pfades des Bildes in Userdefaults und dann erhalten Sie es aus der Hauptansicht, aber ich kann nicht den Hintergrund von einem asset URL. Gibt es eine Möglichkeit, dies zu tun? Oder ein besserer Weg vielleicht?

Hier ist, was ich bisher getan habe:

@IBOutlet weak var imageView: UIImageView! 
var imagePicker = UIImagePickerController() 

@IBAction func background(_ sender: Any) { 
    self.imagePicker.allowsEditing = false 
    self.imagePicker.sourceType = .savedPhotosAlbum 

    imagePicker.modalPresentationStyle = .overCurrentContext 
    self.present(imagePicker, animated: true, completion: nil) 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 

     self.imageView.contentMode = .scaleAspectFit 
     let imageUrl = info[UIImagePickerControllerReferenceURL] as! URL 
     UserDefaults.standard.set(imageUrl, forKey: "background") 
     imageView.image = pickedImage 

    } 

    dismiss(animated: true, completion: nil) 

} 

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    self.imagePicker = UIImagePickerController() 
    dismiss(animated: true, completion: nil) 
} 
+0

Wie über das Speichern von Bilddaten zu 'CoreData' – sCha

+0

@sCha Sie wissen nicht, wie' CoreData' verwenden ... verwendete das nie. – Hawkydoky

Antwort

3

Wie über das Laden von URL von den Standardwerten in viewDidLoad() und dann setImageFromURL nennen? Natürlich müssen Sie das Bild auf Ihr Image gesetzt

func setImageFromURl(stringImageUrl url: String){ 

     if let url = NSURL(string: url) { 
     if let data = NSData(contentsOf: url as URL) { 
      self.image = UIImage(data: data as Data) 
     } 
     } 
    } 
+0

In der Tat ... Ich glaube, ich habe ein Problem mit der URL. Es findet nichts ("nil") bei der Suche nach der URL, die ich habe. – Hawkydoky

+0

@Hawkydoky vielleicht müssen Sie ArbitraryLoads in Ihren ProjectSettings zulassen. (nicht empfohlen, wenn Sie Ihre App veröffentlichen möchten) –

+0

@Moritz das Beispiel behandelt eine lokale URL. Meiner Meinung nach keine Notwendigkeit für URLSession –

Verwandte Themen