2014-11-20 20 views
50

Próbuję ustawić UIImageView programowo w Xcode 6.1:Programowo ustawić obraz do UIImageView z Xcode 6.1/Swift

@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) 

Ale Xcode mówi "oczekiwaną deklarację" z bgImage = UIImageView(image: image) obrazu "afternoon" to PNG, a moja zrozumienie jest PNG nie potrzebuje rozszerzenia w XCode 6.1.

próbował również tylko bgImage.image = UIImage(named: "afternoon"), ale nadal otrzymujemy:

enter image description here

UPDATE

OK, mam umieścić kod do aktualizacji UIImageView do funkcji viewDidLoad, ale UIImageView wciąż nie pokazuje obraz (który istnieje w katalogu głównym jako 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) 

    } 
+1

Musisz umieścić ten kod w funkcji. Umieściłbym go w viewDidLoad(). – HAS

+0

Od kiedy zadeklarowałeś to jako outlet, czy próbowałeś po prostu przypisać obraz zamiast go ponownie zainicjować? zamiast 'bgImage = UIImageView (image: image)' właśnie używając 'bgImage.image = UIImage (nazwanego:" popołudnie ")'? –

+0

Zobacz zaktualizowany OP ... Bardzo nowość w XCode ... bardzo dobrze znany z JavaScript, jQuery, PHP itp. – IlludiumPu36

Odpowiedz

99

Skoro masz swoją bgImage przypisane i powiązane jako IBOutlet, nie ma potrzeby, aby zainicjować go jako UIImageView ... zamiast wszystko co musisz zrobić, to ustawić właściwość obrazu jak bgImage.image = UIImage(named: "afternoon"). Po uruchomieniu tego kodu obraz wyglądał dobrze, ponieważ został już przypisany przy użyciu gniazdka.

enter image description here

Jeśli jednak to nie był wylot i nie masz już podłączony do obiektu UIImageView na pliku storyboard/XI b, a następnie można więc coś jak poniżej ...

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!) 
    } 
} 
3

Ten kod jest w niewłaściwym miejscu:

var image : UIImage = UIImage(named:"afternoon")! 
bgImage = UIImageView(image: image) 
bgImage.frame = CGRect(x: 0, y: 0, width: 100, height: 200) 
view.addSubview(bgImage) 

należy umieścić go wewnątrz funkcji. Zalecam przeniesienie go wewnątrz funkcji viewDidLoad.

W ogóle, tylko kod można dodać w klasie, która nie znajduje się wewnątrz funkcji są deklaracje zmiennych, takich jak:

@IBOutlet weak var bgImage: UIImageView! 
+0

.. dziękuję za pomoc, ale UIImageView wciąż nie pokazuje obrazu ... zobacz zaktualizowany OP – IlludiumPu36

5

OK, got it pracy z tego (tworzenia UIImageView programowo):

var imageViewObject :UIImageView 

imageViewObject = UIImageView(frame:CGRectMake(0, 0, 600, 600)) 

imageViewObject.image = UIImage(named:"afternoon") 

self.view.addSubview(imageViewObject) 

self.view.sendSubviewToBack(imageViewObject) 
4

Co powiesz na to;

myImageView.image=UIImage(named: "image_1") 

gdzie zdjęcie_1 znajduje się w folderze zasobów jako zdjęcie_1. png.

To działało dla mnie, ponieważ używam przełącznika do wyświetlania slajdu obrazu.

20

W kodzie x 8 można bezpośrednio wybrać obraz z okna wyboru (NOWOŚĆ) ...

  • Wystarczy wpisać - „obraz”, a dostaniesz okno podpowiedzi następnie wybierz - „Image dosłowny” z listy (patrz załączony obrazek) i

  • następnie dotknij na placu będziesz mógł zobaczyć wszystkie obrazy (patrz:
    ), które znajdują się w Twoich zasobach graficznych ... lub wybierz inne zdjęcie z tego miejsca.

enter image description here

  • Teraz dotknij kwadratowym pudełku - (widać, że pole kwadratu po wybraniu powyższa opcja)

enter image description here

1

Dzięki szybkiej składni ten pracował ja:

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

W Swift 4, jeśli obraz jest zwracany jako zero.

Kliknij na obrazek, po stronie prawej (Utilities) -> Sprawdź docelowa Członkostwo

1

Jeśli chcesz zrobić to tak, jak pokazał w swoim pytaniu, jest to sposób, aby to zrobić inline

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 
} 
Powiązane problemy