ios - for - xcode tutorial español
Configure mediante programación la imagen en UIImageView con Xcode 6.1/Swift (9)
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
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 "declaración esperada" con
bgImage = UIImageView(image: image)
imagen
"afternoon"
es un PNG, y entiendo que PNG no necesita una extensión en XCode 6.1.
También probé solo
bgImage.image = UIImage(named: "afternoon")
, pero aún así obtengo:
ACTUALIZAR
OK, puse el código para actualizar
UIImageView
en la función
viewDidLoad
, pero
UIImageView
todavía no muestra la imagen (que existe en el directorio base como evening.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)
}
Dado que tiene su bgImage asignada y vinculada como IBOutlet, no es necesario inicializarla como 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 usando la salida.
Sin embargo, si no fuera una salida y no la tuviera conectada a un objeto UIImageView en un archivo storyboard / xib, 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!)
}
}
En Swift 4, si la imagen se devuelve como nula.
Haga clic en la imagen, en el lado derecho (Utilidades) -> Verificar membresía objetivo
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 y luego seleccionar - "Imagen literal" de la lista (ver en la imagen adjunta) y
-
luego toque el cuadrado para ver todas las imágenes (ver en
segunda imagen adjunta) que están en sus activos de imagen ... o seleccione otra imagen desde allí.
- Ahora toque el cuadro cuadrado - (Verá ese cuadro cuadrado después de seleccionar la opción anterior)
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)
Debe colocarlo dentro de una función.
Recomiendo moverlo dentro de la función
viewDidLoad
.
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!
OK, funcionó con esto (creando el UIImageView programáticamente):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
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.
Si desea hacerlo de la manera 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
}
Solo necesita arrastrar y soltar un
ImageView
, crear la acción de salida, vincularlo y proporcionar una imagen (Xcode buscará en su carpeta de
assets
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")
}
}