Jeg prøver å sette UIImageView programmatisk i 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)
Men Xcode sier "expected declaration" med bgImage = UIImageView(image: image)
Image `"afternoon" er en PNG, og min forståelse er at PNG ikke trenger en utvidelse i XCode 6.1.
Prøvde også bare bgImage.image = UIImage(named: "afternoon")
, men får fortsatt:
.
OPPDATERING
OK, jeg har lagt inn koden for å oppdatere UIImageView
i viewDidLoad
-funksjonen, men UIImageView
viser fortsatt ikke bildet (som finnes i basekatalogen som 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)
}
Siden du har bgImage tilordnet og koblet som en IBOutlet, er det ikke nødvendig å initialisere den som en UIImageView... i stedet er alt du trenger å gjøre å angi bildeegenskapen som bgImage.image = UIImage(named: "afternoon")
. Etter å ha kjørt denne koden, virket bildet fint siden det allerede var tilordnet ved hjelp av stikkontakten.
skriv inn bildebeskrivelsen her
Men hvis det ikke var en stikkontakt, og du ikke hadde det allerede koblet til et UIImageView-objekt på et storyboard / xib-fil, kan du gjøre noe sånt som følgende ...
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, fikk det til å fungere med dette (opprette UIImageView programmatisk):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
Denne koden er på feil sted:
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Du må plassere den inne i en funksjon. Jeg anbefaler å flytte den inn i funksjonen viewDidLoad
.
Generelt er den eneste koden du kan legge til i klassen som ikke er inne i en funksjon, variabeldeklarasjoner som:
@IBOutlet weak var bgImage: UIImageView!