Ich kann das Hintergrundbild auf viewDidLoad wie folgt ändern:

    let myBackgroundImage = UIImageView (frame: UIScreen.main.bounds)
    myBackgroundImage.image = UIImage(named: "wallpaper-1-iphone-8-plus.png")
    myBackgroundImage.contentMode = UIViewContentMode.scaleAspectFill
    self.view.insertSubview(myBackgroundImage, at: 0)

Ich möchte die gleiche Aktion mit einem Klick wie folgt ausführen:

    @IBAction func flip4btn5(_ sender: Any)
{
    let myBackgroundImage = UIImageView (frame: UIScreen.main.bounds)
    myBackgroundImage.image = UIImage(named: "wallpaper-2-iphone-8-plus.png")
    myBackgroundImage.contentMode = UIViewContentMode.scaleAspectFill
    self.view.insertSubview(myBackgroundImage, at: 0)
}

Das Hintergrundbild wird jedoch nicht geändert. Warum ? Was denkst du?
Ich benutze Swift 4.1.

0
mannyCalavera 17 Apr. 2018 im 13:53

4 Antworten

Beste Antwort

Versuchen Sie diesen Code, es funktioniert gut.

class ViewController: UIViewController {

    var myBackgroundImage = UIImageView (frame: UIScreen.main.bounds);

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        myBackgroundImage.image = UIImage(named: "wallpaper-1-iphone-8-plus.png")
        myBackgroundImage.contentMode = UIViewContentMode.scaleAspectFill
        self.view.insertSubview(myBackgroundImage, at: 0)
    }

    @IBAction func flip4btn5(_ sender: UIButton) {
        myBackgroundImage.image = UIImage(named: "wallpaper-2-iphone-8-plus.png")    
    }    
}
0
AtulParmar 17 Apr. 2018 im 11:03

Erstellen Sie kein neues Bild. Ändern Sie einfach das Bild des ersten UIImage in Ihrer Schaltflächenaktion wie folgt:

myBackgroundImage.image = UIImage(named: "wallpaper-2-iphone-8-plus.png")
1
Vadim Kotov 17 Apr. 2018 im 11:07

Fügen Sie UIImageViews nicht jedes Mal hinzu, wenn Sie das Hintergrundbild ändern möchten.

Platzieren Sie eine UIImageView in der Ansichtshierarchie, in der sie benötigt wird, und behalten Sie einen Verweis darauf bei. Stellen Sie dann die Bildeigenschaft nach Bedarf ein.

class ViewController: UIViewController {

   @IBOutlet weak var backgroundImageView: UIImageView!

   override func viewDidLoad() {
        super.viewDidLoad()

        backgroundImageView.image = UIImage(named: "wallpaper-1-iphone-8-plus.png")
   }

   @IBAction func flip4btn5(_ sender: Any) {
       backgroundImageView.image = UIImage(named: "wallpaper-2-iphone-8-plus.png")
   }
}

Sie können den contentMode entweder im Storyboard oder in viewDidLoad festlegen. Sie müssen es nach dem Aktualisieren eines Bildes nicht mehr einstellen.

0
Scriptable 17 Apr. 2018 im 10:57
let myBackgroundImage = UIImageView (frame: CGRect.zero)


override func viewDidLoad() {
    super.viewDidLoad()

    myBackgroundImage.image = UIImage(named: "wallpaper-1-iphone-8-plus.png")
    myBackgroundImage.contentMode = UIViewContentMode.scaleAspectFill
    self.view.addSubview(myBackgroundImage)

}

@IBAction func ButtonPressed(_ sender: Any) {

    myBackgroundImage.image = UIImage(named: "wallpaper-2-iphone-8-plus.png")

}
0
marc 17 Apr. 2018 im 11:00