Sto cercando di impostare UIImageView programmaticamente in 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)
Ma Xcode sta dicendo "dichiarazione attesa" con bgImage = UIImageView(image: image)
L'immagine "pomeriggio"
è una PNG, e la mia comprensione è PNG non ha bisogno di un'estensione in XCode 6.1.
Ho anche provato solo bgImage.image = UIImage(named: "afternoon")
, ma ottengo ancora:
AGGIORNAMENTO
OK, ho messo il codice per aggiornare UIImageView
nella funzione viewDidLoad
, ma UIImageView
non mostra ancora l'immagine (che esiste nella directory base come 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)
}
Dal momento che avete la vostra bgImage assegnata e collegata come IBOutlet, non c'è bisogno di inizializzarla come UIImageView... invece tutto quello che dovete fare è impostare la proprietà image come bgImage.image = UIImage(named: "afternoon")
. Dopo aver eseguito questo codice, l'immagine è apparsa bene poiché era già assegnata utilizzando l'uscita.
Tuttavia, se non fosse un outlet e non lo aveste già collegato ad un oggetto UIImageView su un file storyboard/xib, allora potreste fare qualcosa come il seguente...
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, l'ho fatto funzionare con questo (creando programmaticamente la UIImageView):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
Questo codice è nel posto sbagliato:
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Devi metterlo dentro una funzione. Ti consiglio di spostarlo all'interno della funzione viewDidLoad
.
In generale, l'unico codice che puoi aggiungere all'interno della classe che non sia all'interno di una funzione sono le dichiarazioni di variabili come:
@IBOutlet weak var bgImage: UIImageView!