возможно ли создать повторно используемый код для добавления фонового изображения? Если да, то как?

#swift #xcode #programmatically

#swift #xcode #программно

Вопрос:

Я работаю над Swift, и мне интересно, как программно добавить одно и то же фоновое изображение в разные контроллеры просмотра.

 override func viewDidLoad() {
    super.viewDidLoad()
    
    setBackground()
}


func setBackground() {
    view.addSubview(backgroundImageView)
    backgroundImageView.translatesAutoresizingMaskIntoConstraints = false
    backgroundImageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    backgroundImageView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    backgroundImageView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    backgroundImageView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    
    backgroundImageView.image = UIImage(named: K.imageForFirstScreen)
    view.sendSubviewToBack(backgroundImageView)
}
  

на данный момент я создаю функцию setBackground() в каждом контроллере просмотра, поскольку я хочу отображать одно и то же фоновое изображение на нескольких контроллерах просмотра и каждый раз вызывать функцию в viewDidLoad. Итак, я хотел узнать, есть ли где-нибудь способ объявить функцию setBackground, и я могу просто вызвать функцию в viewDidLoad. Я знаю, что могу установить фоновое изображение в инспекторе атрибутов, но я хочу знать, как я могу написать в коде.

Ответ №1:

Есть много методов, которые вы могли бы использовать. Одним из них было бы поместить метод в UIViewController расширение и вызвать его в UIViewController подклассах, которые вы хотите добавить.

 extension UIViewController {
    func setBackground() {
        //...
    }
}
  

Тогда:

 override func viewDidLoad() {
    super.viewDidLoad()
    
    setBackground()
}
  

Комментарии:

1. Большое вам спасибо. Теперь я изучил расширение, и все это заработало! Большое тебе спасибо, Франкенштейн!!

2. Хорошо. Продолжайте кодировать, и вы узнаете больше по мере продвижения вперед 🙂

Ответ №2:

  extension UIViewController {
     func setBackground(color: UIColor?) {
        self.view.backgroundColor = color
     }
 }
  

Как использовать: Теперь у вас будет эта функция в каждом подклассе UIViewController

 class MyNewClass: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        setBackground(color: UIColor.red)
    }

}