#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)
}
}