@shevzoom
 dev., student at MEPhI

Как сделать несколько background в Xcode?

По туториалу сделал приложение для погоды и хотел после изменить фон, чтоб для каждого города из let cities = [...]
была своя картинка.
во View вижу возможность один раз сделать background, как же добавить несколько?
и после вытекающий вопрос, где прописывать условие появление нужной картинки? viewDidLoad?
  • Вопрос задан
  • 568 просмотров
Решения вопроса 1
ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode
Вам нужно разбить задачу на подзадачи. Давайте сформулируем:

  1. Как установить цвет фона перед показом контроллера
  2. Как устанавливать фон для контроллера
  3. Как менять фон у контроллера
  4. Как сменить фон по событию


Теперь стало понятно что ваш вопрос состоит из нескольких, а значит хорошо бы их разбить. Но как написали, так написали. Давайте погружаться.

Как установить цвет фона перед показом контроллера?
Дефолтные значения настраиваются в методе viewDidLoad. Вы правило подозревали в вопросе.

Как устанавливать фон для контроллера?
Вы можете установить фон к корневого вью. Но я бы предложил вариант с UIImageView, растянутой к краям родителя и установкой image. Это может в каком-то смысле инкапсулировать логику фона и заменить класс на более интересный/сложный в будущем.

Как менять фон у контроллера?
Чтобы менять фон, нужно иметь доступ к контейнеру картинки. К примеру вы сделали проперти backgroundImageView, тогда изменить image не составит труда:
class ViewController: UIViewController {
   var backgroundImageView = UIImageView()

   func viewDidLoad() {
      super.viewDidLoad()
      backgroundImageView.image = UIImage()
   }

   func changeBackground() {
      // Пример смены фона по вызову функции. Объект UIImage должен быть ваш, для примера пустой.
      backgroundImageView.image = UIImage()
   }
}


Как сменить фон по событию?
Нужно определить само событие. Если кнопка - тогда по таргету. Запись в БД - обсервер. Возможно подойдут системные нотификации, но вы с ними поосторожнее. В любом случае по любому из ивентов вы вызовете функцию, и в этой функции достаточно будет вызывать код из предыдущего вопроса.

P.S. Ваш вопрос очень тривиален, и, если честно, именно поэтому на нем нет ответов. Вам стоит изучить основы, и после перейти к практическим задачам.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы