J'essaie de définir UIImageView par programme dans 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)
Mais Xcode dit "déclaration attendue" avec bgImage = UIImageView(image: image)
Image "afternoon"
est un PNG et ma compréhension est que PNG n'a pas besoin d'une extension dans XCode 6.1.
Aussi essayé juste bgImage.image = UIImage(named: "afternoon")
, mais toujours obtenir:
UPDATE
OK, j'ai mis le code pour mettre à jour UIImageView
dans la fonction viewDidLoad
, mais UIImageView
ne montre toujours pas l'image (qui existe dans le répertoire de base sous le nom d'après-midi.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)
}
Etant donné que votre image bgImage est assignée et liée en tant qu'IBOutlet, il n'est pas nécessaire de l'initialiser en tant que UIImageView ... à la place, il vous suffit de définir la propriété d'image comme bgImage.image = UIImage(named: "afternoon")
. Après avoir exécuté ce code, l'image semblait correcte car elle avait déjà été attribuée à l'aide de la prise.
Cependant, si ce n'était pas un point de vente et que vous ne l'aviez pas déjà connecté à un objet UIImageView sur un fichier storyboard/xib, vous pourriez alors obtenir quelque chose comme ce qui suit ...
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!)
}
}
Dans xcode 8, vous pouvez directement choisir une image dans la fenêtre de sélection (NOUVEAU) ...
Il vous suffit de taper - "image" et vous obtiendrez une boîte de suggestion, puis sélectionnez - "Littéral" dans la liste (voir photo ci-jointe) et
appuyez ensuite sur le carré, vous pourrez voir toutes les images (voir
(deuxième photo jointe) qui se trouvent dans votre image ... ou sélectionnez une autre image à partir de cet emplacement.
--- (
OK, ça marche avec ça (créer le UIImageView par programme):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
Que dis-tu de ça;
myImageView.image=UIImage(named: "image_1")
où image_1 se trouve dans le dossier des ressources sous la forme image_1 .png.
Cela a fonctionné pour moi puisque j'utilise un boîtier de commutateur pour afficher une diapositive d'image.
Ce code est au mauvais endroit:
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Vous devez le placer dans une fonction. Je recommande de le déplacer dans la fonction viewDidLoad
.
En général, le seul code que vous pouvez ajouter dans la classe qui ne se trouve pas dans une fonction est une déclaration de variable comme:
@IBOutlet weak var bgImage: UIImageView!
Il vous suffit de glisser-déposer un ImageView
, de créer l'action de sortie, de le lier et de fournir une image (Xcode recherchera dans votre dossier assets
le nom que vous avez fourni (ici: "toronto" "))
Dans yourProject/ViewController.Swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imgView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imgView.image = UIImage(named: "toronto")
}
}
Si vous voulez le faire comme vous l’avez montré dans votre question, c’est une façon de le faire en ligne.
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
}
Avec la syntaxe Swift, cela a fonctionné pour moi:
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
Dans Swift 4, si l'image est renvoyée sous la forme nil.
Cliquez sur l'image, à droite (Utilitaires) -> Vérifier l'adhésion à la cible