Установить UIImageView в качестве фона - Swift 4 - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу установить фоновое изображение позади всего, что уже существует в представлении.

Я пытался:

override func viewDidLoad() {
    super.viewDidLoad()
    let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
    backgroundImage.image = UIImage(named: "bg-img")
    backgroundImage.contentMode = UIViewContentMode.scaleAspectFill
    self.view.insertSubview(backgroundImage, at: 0)
}

Но это не сработало (даже не добавилоimg).Поэтому я импортировал компонент ImageView и добавил изображение с помощью графического интерфейса XCode, и оно добавило изображение, но поверх всего.Я попробовал несколько ответов Stack Overflow (вот откуда я взял вышеупомянутый код), но мне не повезло.

Моя структура папок выглядит так:

enter image description here

Мое изображение находится в папке Assets.xcassets.

ОБНОВЛЕНИЕ: Я перезапустил Xcode, и мой код сработал.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Все, что вам нужно сделать, это дать полное имя изображения jpg:

backgroundImage.image = UIImage(named: "bg-img.jpg")

Если бы оно было помещено в Assets.xcassets или png файл, то указание расширения было бынеобязательно.

Иногда все, что вам нужно, это очистить вашу папку сборки K или просто перезапустить Xcode.

0 голосов
/ 23 сентября 2018

Установка фреймов подпредставлений в viewDidLoad не является хорошей практикой, потому что подпредставления еще не правильно размещены в этой точке.Вы должны установить кадры подпредставлений в viewDidLayoutSubviews, который вызывается после self.view, и его подпредставления корректно размечены.

Ваш ViewController:

var backgroundImage: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.backgroundImage = UIImageView(image: UIImage(named: "bg-img"))
    self.backgroundImage.contentMode = .scaleAspectFill
    self.view.insertSubview(self.backgroundImage, at: 0)
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    self.backgroundImage.frame = self.view.bounds
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...