Estou tentando definir UIImageView programaticamente no 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)
Mas o Xcode está dizendo que a "declaração esperada" com a bgImage = UIImageView(image: image)
imagem "afternoon"
é um PNG, e meu entendimento é que o PNG não precisa de uma extensão no XCode 6.1.
Também tentei apenas bgImage.image = UIImage(named: "afternoon")
, mas ainda consigo:
ATUALIZAR
OK, coloquei o código a ser atualizado UIImageView
na viewDidLoad
função, mas UIImageView
ainda não está exibindo a imagem (que existe no diretório base comoternoon.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)
}
bgImage = UIImageView(image: image)
apenas usarbgImage.image = UIImage(named: "afternoon")
?Respostas:
Já que você tem seu bgImage atribuído e vinculado como um IBOutlet, não há necessidade de inicializá-lo como um UIImageView ... em vez disso, tudo que você precisa fazer é definir a propriedade da imagem como
bgImage.image = UIImage(named: "afternoon")
. Depois de executar este código, a imagem parecia bem, pois já estava atribuída usando o outlet.No entanto, se não fosse um outlet e você ainda não o tivesse conectado a um objeto UIImageView em um arquivo storyboard / xib, você poderia fazer algo como o seguinte ...
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!) } }
fonte
No xcode 8 você pode escolher diretamente a imagem da janela de seleção (NOVA) ...
Você só precisa digitar - "imagem" e você receberá uma caixa de sugestões, em seguida, selecione - "Literal de imagem" na lista (veja na imagem em anexo) e
em seguida, toque no quadrado para ver todas as imagens (veja na
segunda foto em anexo) que estão em seus ativos de imagem ... ou selecione outra imagem de lá.
fonte
OK, comecei a trabalhar com isto (criando o UIImageView programaticamente):
var imageViewObject :UIImageView imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600)) imageViewObject.image = UIImage(named:"afternoon") self.view.addSubview(imageViewObject) self.view.sendSubviewToBack(imageViewObject)
fonte
Que tal agora;
myImageView.image=UIImage(named: "image_1")
onde image_1 está dentro da pasta de ativos como image_1. png .
Isso funcionou para mim, pois estou usando uma caixa de interruptor para exibir um slide de imagem.
fonte
Este código está no lugar errado:
var image : UIImage = UIImage(named:"afternoon")! bgImage = UIImageView(image: image) bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200) view.addSubview(bgImage)
Você deve colocá-lo dentro de uma função. Eu recomendo movê-lo dentro da
viewDidLoad
função.Em geral, o único código que você pode adicionar dentro da classe que não está dentro de uma função são declarações de variáveis como:
@IBOutlet weak var bgImage: UIImageView!
fonte
Com a sintaxe rápida, isso funcionou para mim:
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
fonte
No Swift 4, se a imagem for retornada como nulo.
Clique na imagem, no lado direito (Utilitários) -> Check Target Membership
fonte
Se você quiser fazer da maneira que mostrou em sua pergunta, esta é uma maneira de fazê-lo 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 }
fonte
Você só precisa arrastar e soltar um
ImageView
, criar a ação de saída, vinculá-lo e fornecer uma imagem (o Xcode vai olhar em seuassets
pasta o nome que você forneceu (aqui: "toronto"))No
yourProject/ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var imgView: UIImageView! override func viewDidLoad() { super.viewDidLoad() imgView.image = UIImage(named: "toronto") } }
fonte