2014-11-20 3 views
50

Я пытаюсь установить UIImageView программно в XCode 6.1:Программным установить изображение для UIImageView с 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) 

Но Xcode говорит "ожидаемое заявление" с bgImage = UIImageView(image: image) Image "afternoon" является PNG, и мой понимание PNG не нуждается в расширении в XCode 6.1.

пытался Кроме того, только bgImage.image = UIImage(named: "afternoon"), но до сих пор получить:

enter image description here

UPDATE

ОК, я поставил код для обновления UIImageView в функцию viewDidLoad, но UIImageView все еще не показывает изображение (которое существует в базовом каталоге как днем.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

Вам нужно ввести этот код в функцию. Я бы положил его в viewDidLoad(). – HAS

+0

Поскольку вы объявили его как розетку, попробовали ли вы просто назначить изображение вместо повторной инициализации? вместо 'bgImage = UIImageView (image: image)' просто используя 'bgImage.image = UIImage (named:« днем ​​»)'? –

+0

См. Обновленный OP ... Очень новый для XCode ... очень знакомый с JavaScript, jQuery, PHP и т. Д. – IlludiumPu36

ответ

99

поскольку вы ваш bgImage назначены и связаны как IBOutlet, нет необходимости инициализировать его как UIImageView ... вместо того, чтобы все, что вам нужно сделать, это установить свойство изображения, как bgImage.image = UIImage(named: "afternoon"). После запуска этого кода изображение оказалось прекрасным, поскольку оно уже было назначено с помощью розетки.

enter image description here

Однако, если бы это был не выход, и вы не имеете его уже подключен к объекту UIImageView на файле раскадровки/XIb, то вы можете так что-то вроде следующего ...

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

Этот код находится в неправильном месте:

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

Вы должны разместить его внутри функции. Я рекомендую переместить его внутри функции viewDidLoad.

В общем, единственный код, который вы можете добавить в класс, это не внутри функции являются объявления переменных, как:

@IBOutlet weak var bgImage: UIImageView! 
+0

..thanks для вашей помощи, но UIImageView все еще не показывает изображение ... см. Обновленный OP – IlludiumPu36

5

ОК, получил это работает с этим (создание 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) 
4

Как насчет этого;

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

где image_1 находится в папке с ресурсами как image_1. png.

Это сработало для меня, так как я использую корпус коммутатора для отображения слайда изображения.

20

В xcode 8 вы можете напрямую выбрать изображение из окна выбора (NEW) ...

  • Вам просто нужно ввести - «образ», и вы получите ящик для предложений затем выберите - «Image Литерал» из списка (см в прилагаемом рисунке) и

  • затем нажмите на площади вы сможете увидеть все изображения (см. в
    второе прикрепленное изображение), которые находятся в вашем изображении, активы ... или выберите другое изображение оттуда.

enter image description here

  • Теперь нажмите на квадратном поле - (Вы увидите, что квадратное окно после выбора выше варианта)

enter image description here

1

С быстрым синтаксисом этого работал me:

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

В Swift 4, если изображение возвращается как ноль.

Нажмите на изображение, на правой стороне (Utilities) -> Check Target Членство

1

Если вы хотите сделать это так, как вы показали в вашем вопросе, это способ сделать это рядный

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 
} 
Смежные вопросы