Setzen Sie das Bild mit Xcode 6.1 / Swift programmgesteuert auf UIImageView


84

Ich versuche, UIImageView programmgesteuert in Xcode 6.1 festzulegen:

@IBOutlet weak var bgImage: UIImageView!

var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)

Aber Xcode sagt, dass "erwartete Deklaration" mit bgImage = UIImageView(image: image) Image "afternoon"ein PNG ist, und nach meinem Verständnis benötigt PNG keine Erweiterung in XCode 6.1.

Auch gerade versucht bgImage.image = UIImage(named: "afternoon"), aber trotzdem bekommen:

Geben Sie hier die Bildbeschreibung ein

AKTUALISIEREN

OK, ich habe den zu aktualisierenden Code UIImageViewin die viewDidLoadFunktion eingefügt, aber UIImageViewdas Bild (das im Basisverzeichnis alsnachmittag.png vorhanden ist) wird immer noch nicht angezeigt:

@IBOutlet weak var bgImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    updateTime()
    var timer = NSTimer()
    let aSelector : Selector = "updateTime"
    timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)

    var image : UIImage = UIImage(named:"afternoon")!
    bgImage = UIImageView(image: image)
}

2
Sie müssen diesen Code in eine Funktion einfügen. Ich würde es in viewDidLoad () setzen.
HAT

1
Haben Sie versucht, das Image einfach zuzuweisen, anstatt es neu zu initialisieren, seit Sie es als Outlet deklariert haben? anstatt bgImage = UIImageView(image: image)nur zu benutzen bgImage.image = UIImage(named: "afternoon")?
c_rath

1
Siehe aktualisiertes OP ... Sehr neu in XCode ... sehr vertraut mit JavaScript, jQuery, PHP usw.
IlludiumPu36

Antworten:


154

Da Sie Ihr bgImage als IBOutlet zugewiesen und verknüpft haben, müssen Sie es nicht als UIImageView initialisieren. Stattdessen müssen Sie lediglich die Bildeigenschaft wie folgt festlegen bgImage.image = UIImage(named: "afternoon"). Nach dem Ausführen dieses Codes sah das Bild gut aus, da es bereits über die Steckdose zugewiesen wurde.

Geben Sie hier die Bildbeschreibung ein

Wenn es sich jedoch nicht um eine Steckdose handelt und Sie sie noch nicht mit einem UIImageView-Objekt in einer Storyboard- / XIB-Datei verbunden haben, können Sie Folgendes tun ...

class ViewController: UIViewController {
    var bgImage: UIImageView?

    override func viewDidLoad() {
        super.viewDidLoad()

        var image: UIImage = UIImage(named: "afternoon")!
        bgImage = UIImageView(image: image)
        bgImage!.frame = CGRectMake(0,0,100,200)
        self.view.addSubview(bgImage!)
    }
}

47

In xcode 8 können Sie das Bild direkt aus dem Auswahlfenster auswählen (NEU) ...

  • Sie müssen nur "image" eingeben und erhalten ein Vorschlagsfeld. Wählen Sie dann "Image Literal" aus der Liste aus (siehe im beigefügten Bild) und

  • Tippen Sie dann auf das Quadrat, um alle Bilder (siehe im
    zweiten angehängten Bild) zu sehen, die sich in Ihren Bildelementen befinden ... oder wählen Sie ein anderes Bild von dort aus.

Geben Sie hier die Bildbeschreibung ein

  • Tippen Sie nun auf das quadratische Feld - (Sie sehen das quadratische Feld, nachdem Sie die obige Option ausgewählt haben.)

Geben Sie hier die Bildbeschreibung ein


3
Wow, das erste Mal so etwas in einer IDE zu sehen, sieht jetzt in meinem Code ziemlich cool aus
Big_Chair

9

OK, hat es damit funktioniert (UIImageView programmgesteuert erstellen):

var imageViewObject :UIImageView

imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))

imageViewObject.image = UIImage(named:"afternoon")

self.view.addSubview(imageViewObject)

self.view.sendSubviewToBack(imageViewObject)

9

Wie wäre es damit;

myImageView.image=UIImage(named: "image_1")

Dabei befindet sich image_1 im Assets-Ordner als image_1. png .

Dies hat bei mir funktioniert, da ich eine Schalterhülle verwende, um eine Bildfolie anzuzeigen.


5

Dieser Code befindet sich am falschen Ort:

var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)

Sie müssen es in eine Funktion einfügen. Ich empfehle es innerhalb der viewDidLoadFunktion zu verschieben.

Im Allgemeinen ist der einzige Code, den Sie innerhalb der Klasse hinzufügen können, der sich nicht in einer Funktion befindet, Variablendeklarationen wie:

@IBOutlet weak var bgImage: UIImageView!

1
..danke für Ihre Hilfe, aber UIImageView zeigt immer noch nicht das Bild ... siehe aktualisierte OP
IlludiumPu36

2

Mit schneller Syntax hat das bei mir funktioniert:

    let leftImageView = UIImageView()
    leftImageView.image = UIImage(named: "email")

    let leftView = UIView()
    leftView.addSubview(leftImageView)

    leftView.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
    leftImageView.frame = CGRect(x: 10, y: 10, width: 20, height: 20)
    userNameTextField.leftViewMode = .always
    userNameTextField.leftView = leftView

2

In Swift 4, wenn das Bild als Null zurückgegeben wird.

Klicken Sie auf das Bild rechts (Dienstprogramme) -> Zielmitgliedschaft prüfen


2

Wenn Sie es so machen möchten, wie Sie es in Ihrer Frage gezeigt haben, ist dies eine Möglichkeit, es inline zu machen

class YourClass: UIViewController{

  @IBOutlet weak var tableView: UITableView!
  //other IBOutlets

  //THIS is how you declare a UIImageView inline
  let placeholderImage : UIImageView = {
        let placeholderImage = UIImageView(image: UIImage(named: "nophoto"))
        placeholderImage.contentMode = .scaleAspectFill
        return placeholderImage
    }()

   var someVariable: String!
   var someOtherVariable: Int!

   func someMethod(){
      //method code
   }

   //and so on
}

2

Sie müssen nur eine ziehen und ablegen ImageView, die Outlet-Aktion erstellen, sie verknüpfen und ein Bild bereitstellen (Xcode wird in Ihrem angezeigtassets Ordner nach dem von Ihnen angegebenen Namen (hier: "toronto")).

Im yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.