Configure la imagen mediante programación en UIImageView con Xcode 6.1 / Swift

86

Estoy tratando de configurar UIImageView mediante programación en 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)

Pero Xcode dice que la "declaración esperada" con bgImage = UIImageView(image: image) Image "afternoon"es un PNG, y tengo entendido que PNG no necesita una extensión en XCode 6.1.

También intenté solo bgImage.image = UIImage(named: "afternoon"), pero aún así obtengo:

ingrese la descripción de la imagen aquí

ACTUALIZAR

OK, puse el código para actualizar UIImageViewen la viewDidLoadfunción, pero UIImageViewtodavía no muestra la imagen (que existe en el directorio base como tarde.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)
}
IlludiumPu36
fuente
2
Necesitas poner ese código en una función. Lo pondría en viewDidLoad ().
TIENE el
1
Desde que lo declaró como una salida, ¿ha intentado simplemente asignar la imagen en lugar de reinicializarla? en lugar de bgImage = UIImageView(image: image)solo usar bgImage.image = UIImage(named: "afternoon")?
c_rath
1
Ver OP actualizado ... Muy nuevo en XCode ... muy familiarizado con JavaScript, jQuery, PHP, etc.
IlludiumPu36

Respuestas:

159

Dado que tiene su bgImage asignada y vinculada como un IBOutlet, no es necesario inicializarlo como un UIImageView ... en cambio, todo lo que necesita hacer es establecer la propiedad de la imagen como bgImage.image = UIImage(named: "afternoon"). Después de ejecutar este código, la imagen parecía estar bien, ya que ya estaba asignada mediante la salida.

ingrese la descripción de la imagen aquí

Sin embargo, si no era una salida y no lo tenía ya conectado a un objeto UIImageView en un archivo storyboard / xib, entonces podría hacer algo como lo siguiente ...

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!)
    }
}
c_rath
fuente
49

En xcode 8 puede elegir directamente la imagen de la ventana de selección (NUEVO) ...

  • Solo necesita escribir - "imagen" y obtendrá un cuadro de sugerencias, luego seleccione - "Imagen literal" de la lista (vea la imagen adjunta) y

  • luego toque en el cuadrado, podrá ver todas las imágenes (ver en la
    segunda imagen adjunta) que están en sus activos de imagen ... o seleccione otra imagen desde allí.

ingrese la descripción de la imagen aquí

  • Ahora toque el cuadro cuadrado - (Verá ese cuadro cuadrado después de seleccionar la opción anterior)

ingrese la descripción de la imagen aquí

Vijay Sharma
fuente
4
Vaya, la primera vez que veo algo así en un IDE, se ve muy bien en mi código ahora
Big_Chair
Gracias por la ayuda, amigo. Cuidate amigo.
thesamoanppprogrammer
11

OK, lo hice funcionar con esto (creando el UIImageView mediante programación):

var imageViewObject :UIImageView

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

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

self.view.addSubview(imageViewObject)

self.view.sendSubviewToBack(imageViewObject)
IlludiumPu36
fuente
9

Qué tal esto;

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

donde image_1 está dentro de la carpeta de activos como image_1. png .

Esto funcionó para mí, ya que estoy usando una caja de interruptor para mostrar una diapositiva de imagen.

dnaatwork.com
fuente
5

Este código está en el lugar equivocado:

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

Debes colocarlo dentro de una función. Recomiendo moverlo dentro de la viewDidLoadfunción.

En general, el único código que puede agregar dentro de la clase que no está dentro de una función son declaraciones de variables como:

@IBOutlet weak var bgImage: UIImageView!
Alfie Hanssen
fuente
1
..gracias por su ayuda, pero UIImageView todavía no muestra la imagen ... ver OP actualizado
IlludiumPu36
2

Con una sintaxis rápida, esto funcionó para mí:

    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
KOTIOS
fuente
2

En Swift 4, si la imagen se devuelve como nil.

Haga clic en la imagen, en el lado derecho (Utilidades) -> Verificar membresía de destino

YaBoiSandeep
fuente
2

Si desea hacerlo de la forma que mostró en su pregunta, esta es una forma de hacerlo en línea

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
}
AnBisw
fuente
2

Solo necesita arrastrar y soltar ImageView, crear la acción de salida, vincularla y proporcionar una imagen (Xcode buscará en su assetscarpeta el nombre que proporcionó (aquí: "toronto"))

En yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}

fuente