Програмно встановіть зображення на UIImageView з Xcode 6.1 / Swift


85

Я намагаюся встановити UIImageView програмно в 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)

Але Xcode каже, що "очікувана декларація" із bgImage = UIImageView(image: image) зображенням "afternoon"є PNG, і я розумію, що PNG не потребує розширення в XCode 6.1.

Також пробував просто bgImage.image = UIImage(named: "afternoon"), але все одно отримую:

введіть тут опис зображення

ОНОВЛЕННЯ

Добре, я додав код для оновлення UIImageViewу viewDidLoadфункцію, але UIImageViewвсе ще не відображаю зображення (яке існує в базовій директорії як 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)
}

2
Вам потрібно помістити цей код у функцію. Я б поклав це на viewDidLoad ().
МАЄ

1
Оскільки ви оголосили його як розетку, чи намагалися ви просто призначити зображення, а не повторно його ініціалізувати? замість того, щоб bgImage = UIImageView(image: image)просто використовувати bgImage.image = UIImage(named: "afternoon")?
c_rath

1
Дивіться оновлений OP ... Дуже новий для XCode ... дуже добре знайомий з JavaScript, jQuery, PHP тощо
IlludiumPu36

Відповіді:


158

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

введіть тут опис зображення

Однак, якщо це не була розетка, і у вас її вже не було підключено до об’єкта 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!)
    }
}

49

У xcode 8 ви можете безпосередньо вибрати зображення у вікні вибору (НОВЕ) ...

  • Вам просто потрібно набрати - "зображення", і ви отримаєте поле з пропозицією, потім виберіть - "Image Literal" зі списку (див. На доданому малюнку) і

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

введіть тут опис зображення

  • Тепер натисніть на квадратне поле - (Ви побачите це квадратне поле після вибору вищеописаного варіанту)

введіть тут опис зображення


4
Нічого собі, вперше побачивши щось подібне в IDE, зараз виглядає досить круто в моєму коді
Big_Chair

Дякую за допомогу приятелю. Бережи товариша.
thesamoanppprogrammer

11

Добре, я працюю з цим (створюючи 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)

9

Як щодо цього;

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

де image_1 знаходиться в папці активів як image_1. PNG .

Це спрацювало для мене, оскільки я використовую корпус перемикача для відображення слайда зображення.


5

Цей код знаходиться не в тому місці:

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!

1
.. дякуємо за допомогу, але UIImageView все ще не показує зображення ... див. оновлений ОП
IlludiumPu36

2

Завдяки швидкому синтаксису це мені вдалося:

    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

2

У Swift 4, якщо зображення повертається як нуль.

Клацніть на зображення праворуч (Службові програми) -> Перевірити цільове членство


2

Якщо ви хочете зробити це так, як ви показали у своєму запитанні, це спосіб зробити це вбудовано

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
}

2

Вам просто потрібно перетягнути ImageView, створити дію розетки, зв’язати її та надати зображення (Xcode шукатиме у вашій assetsпапці ім’я, яке ви вказали (тут: "Торонто"))

В yourProject/ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imgView.image = UIImage(named: "toronto")
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.