J'essaie de définir UIImageView de manière programmatique 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 "expected declaration" ; avec bgImage = UIImageView(image : image)
L'image "afternoon"
est un PNG, et si j'ai bien compris, le PNG n'a pas besoin d'extension dans XCode 6.1.
J'ai aussi essayé simplement bgImage.image = UIImage(named : "afternoon" ;)
, mais j'obtiens toujours :
![entrez la description de l'image ici][1]
[1] : https://i.stack.imgur.com/zslbH.jpg
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 afternoon.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)
}
Puisque votre bgImage est assignée et liée en tant que IBOutlet, il n'est pas nécessaire de l'initialiser en tant que UIImageView... au lieu de cela, tout ce que vous devez faire est de définir la propriété de l'image comme bgImage.image = UIImage(named : "afternoon" ;)
. Après avoir exécuté ce code, l'image est apparue correctement puisqu'elle était déjà assignée en utilisant l'outlet.
![entrez la description de l'image ici][1]
Cependant, s'il ne s'agissait pas d'un outlet et que vous ne l'aviez pas déjà connecté à un objet UIImageView dans un fichier storyboard/xib, vous pourriez alors faire 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!)
}
}
OK, j'ai réussi à le faire fonctionner avec ceci (en créant le UIImageView de manière programmatique) :
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
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 vous recommande de le placer dans la fonction viewDidLoad
.
En général, le seul code que vous pouvez ajouter à l'intérieur de la classe qui n'est pas à l'intérieur d'une fonction sont les déclarations de variables comme :
@IBOutlet weak var bgImage: UIImageView!