Ik'm probeer UIImageView programmatisch in te stellen 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)
Maar Xcode zegt "expected declaration" met bgImage = UIImageView(image: image)
Image "afternoon"
is een PNG, en mijn begrip is PNG heeft geen extensie nodig in XCode 6.1.
Heb ook geprobeerd gewoon bgImage.image = UIImage(named: "afternoon")
, maar krijg nog steeds:
UPDATE
OK, ik heb de code om UIImageView
te updaten in de viewDidLoad
functie gezet, maar UIImageView
laat nog steeds de afbeelding niet zien (die bestaat in de basismap als 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)
}
Aangezien u uw bgImage heeft toegewezen en gelinkt als een IBOutlet, is het niet nodig om het te initialiseren als een UIImageView... in plaats daarvan hoeft u alleen maar de image property in te stellen zoals bgImage.image = UIImage(named: "afternoon")
. Na het uitvoeren van deze code, verscheen de afbeelding prima omdat het al was toegewezen met behulp van de outlet.
Als het echter'geen outlet was en je had het niet al gekoppeld aan een UIImageView object op een storyboard/xib bestand, dan zou je iets als het volgende kunnen doen...
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, hiermee kreeg ik het aan de praat (door de UIImageView programmatisch aan te maken):
var imageViewObject :UIImageView
imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600))
imageViewObject.image = UIImage(named:"afternoon")
self.view.addSubview(imageViewObject)
self.view.sendSubviewToBack(imageViewObject)
Deze code staat op de verkeerde plaats:
var image : UIImage = UIImage(named:"afternoon")!
bgImage = UIImageView(image: image)
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(bgImage)
Je moet het in een functie plaatsen. Ik raad aan om het in de viewDidLoad
functie te plaatsen.
In het algemeen, de enige code die je kunt toevoegen in de klasse die niet in een functie zit zijn variabele declaraties zoals:
@IBOutlet weak var bgImage: UIImageView!