Programmatically set image to UIImageView with Xcode 6.1/Swift

IosXcodeSwift

Ios Problem Overview


I'm trying to set UIImageView programmatically in Xcode 6.1:

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

But Xcode is saying "expected declaration" with bgImage = UIImageView(image: image) Image "afternoon"is a PNG, and my understanding is PNG does not need an extension in XCode 6.1.

Also tried just bgImage.image = UIImage(named: "afternoon"), but still get:

enter image description here

UPDATE

OK, I have put the code to update UIImageView into the viewDidLoad function, but UIImageView is still not showing the image (which exists in the base directory as afternoon.png):

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

Ios Solutions


Solution 1 - Ios

Since you have your bgImage assigned and linked as an IBOutlet, there is no need to initialize it as a UIImageView... instead all you need to do is set the image property like bgImage.image = UIImage(named: "afternoon"). After running this code, the image appeared fine since it was already assigned using the outlet.

enter image description here

However, if it wasn't an outlet and you didn't have it already connected to a UIImageView object on a storyboard/xib file, then you could so something like the following...

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

Solution 2 - Ios

In xcode 8 you can directly choose image from the selection window (NEW)...

  • You just need to type - "image" and you will get a suggestion box then select -"Image Literal" from list (see in attached picture) and

  • then tap on the square you will be able to see all images(see in
    second attached picture) which are in your image assets... or select other image from there.

enter image description here

  • Now tap on square box - (You will see that square box after selecting above option)

enter image description here

Solution 3 - Ios

OK, got it working with this (creating the UIImageView programmatically):

var imageViewObject :UIImageView
        
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
        
imageViewObject.image = UIImage(named:"afternoon")
        
self.view.addSubview(imageViewObject)

self.view.sendSubviewToBack(imageViewObject)

Solution 4 - Ios

How about this;

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

where image_1 is within the assets folder as image_1.png.

This worked for me since i'm using a switch case to display an image slide.

Solution 5 - Ios

This code is in the wrong place:

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

You must place it inside a function. I recommend moving it inside the viewDidLoad function.

In general, the only code you can add within the class that's not inside of a function are variable declarations like:

@IBOutlet weak var bgImage: UIImageView!

Solution 6 - Ios

With swift syntax this worked for me :

    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

Solution 7 - Ios

In Swift 4, if the image is returned as nil.

Click on image, on the right hand side (Utilities) -> Check Target Membership

Solution 8 - Ios

If you want to do it the way you showed in your question, this is a way to do it 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
}

Solution 9 - Ios

You just need to drag and drop an ImageView, create the outlet action, link it, and provide an image (Xcode is going to look in your assets folder for the name you provided (here: "toronto"))

In yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        imgView.image = UIImage(named: "toronto")
    }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionIlludiumPu36View Question on Stackoverflow
Solution 1 - Iosc_rathView Answer on Stackoverflow
Solution 2 - IosVijay SharmaView Answer on Stackoverflow
Solution 3 - IosIlludiumPu36View Answer on Stackoverflow
Solution 4 - Iosdnaatwork.comView Answer on Stackoverflow
Solution 5 - IosAlfie HanssenView Answer on Stackoverflow
Solution 6 - IosKOTIOSView Answer on Stackoverflow
Solution 7 - IosyoshiiiiiiiiView Answer on Stackoverflow
Solution 8 - IosAnBiswView Answer on Stackoverflow
Solution 9 - Iosuser5683940View Answer on Stackoverflow