2014-11-20 8 views
50

Ich versuche UIImageView programmatisch in XCode 6.1 einzustellen:Bild Programmatically Set mit XCode UIImageView 6.1/Swift

@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 "erwartete Erklärung" mit bgImage = UIImageView(image: image)"afternoon" Bild ist ein PNG, und meine Verständnis ist PNG benötigt keine Erweiterung in XCode 6.1.

versuchte auch nur bgImage.image = UIImage(named: "afternoon"), aber immer noch erhalten:

enter image description here

UPDATE

OK, habe ich den Code setzen UIImageView in die viewDidLoad Funktion zu aktualisieren, aber UIImageView zeigt noch nicht das Bild (das im Basisverzeichnis als afternoon.png existiert):

@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) 

    } 
+1

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

+0

Da Sie es als eine Steckdose deklariert haben, haben Sie versucht, das Bild einfach zuzuweisen, anstatt es neu zu initialisieren? anstelle von 'bgImage = UIImageView (Bild: Bild)' nur mit 'bgImage.image = UIImage (benannt:" Nachmittag ")'? –

+0

Siehe aktualisierten OP ... Sehr neu zu XCode ... sehr vertraut mit JavaScript, jQuery, PHP usw. – IlludiumPu36

Antwort

99

Da Sie Ihr bgImage als IBOutlet zugewiesen und verknüpft haben, müssen Sie es nicht als UIImageView initialisieren ... Stattdessen müssen Sie nur die Bildeigenschaft wie bgImage.image = UIImage(named: "afternoon") festlegen. Nach dem Ausführen dieses Codes erschien das Bild ordnungsgemäß, da es bereits über den Ausgang zugewiesen wurde.

enter image description here

aber wenn es nicht ein Auslass und Sie hatten nicht damit verbunden bereits zu einem UIImageView Objekt auf einem Storyboard/xib Datei, dann könnte man so etwas wie die folgenden ...

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!) 
    } 
} 
3

Dieser Code ist an der falschen Stelle:

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 es in einer Funktion setzen müssen. Ich empfehle, es innerhalb der viewDidLoad Funktion zu verschieben.

Im Allgemeinen ist der einzige Code, den Sie innerhalb der Klasse hinzufügen, die nicht innerhalb einer Funktion ist variabel sind Erklärungen wie:

@IBOutlet weak var bgImage: UIImageView! 
+0

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

5

OK, bekam es mit dieser Arbeit (die Erstellung der UIImageView programmatisch):

var imageViewObject :UIImageView 

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

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

self.view.addSubview(imageViewObject) 

self.view.sendSubviewToBack(imageViewObject) 
4

Wie wäre es damit?

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

Dabei befindet sich Bild_1 im Ordner "Assets" als Bild_1. png.

Das funktionierte für mich, da ich ein Switch-Gehäuse verwende, um eine Bildfolie anzuzeigen.

20

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

  • Sie müssen nur geben - „Bild“ und Sie werden einen Vorschlag Feld wählen Sie dann bekommen - „Bild Literal“ aus der Liste (in der beigefügten Bild sehen) und

  • tippen Sie dann auf dem Platz Sie werden in der Lage sein, alle Bilder (siehe in
    zweites beigefügtes Bild), die in Ihrem Bild Assets sind ... oder wählen Sie anderes Bild von dort.

enter image description here

  • tippen jetzt auf viereckigen Kasten -

enter image description here

1

Mit schnellen Syntax (Sie werden nach der Auswahl oben Option, dass die viereckigen Kasten sehen) diese arbeiteten ich:

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 
1

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

Klicken Sie auf das Bild auf der rechten Seite (Dienstprogramme) -> Überprüfen Sie die Ziel Mitgliedschaft

1

Wenn Sie es die Art und Weise zu tun, wollen Sie in Ihrer Frage zeigte, ist dies eine Möglichkeit, es zu tun Inline

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 
} 
Verwandte Themen