web-dev-qa-db-fra.com

Définir par programme l'image à UIImageView avec Xcode 6.1 / Swift

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:

enter image description here

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)
}
75
IlludiumPu36

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.

enter image description here

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

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.

enter image description here

--- (enter image description here

43
Vijay Sharma

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)
8
IlludiumPu36

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.

6
dnaatwork.com

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!
4
Alfie Hanssen

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")
    }
}
1
rust

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
}
1
Annjawn

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
1
KOTIOS

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

1
YaBoiSandeep