swift 有没有可能制作可重用代码来添加背景图像?如果是,如何进行?

jgwigjjp  于 2023-05-16  发布在  Swift
关注(0)|答案(2)|浏览(204)

我正在使用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中调用该函数。我知道我可以在属性检查器中设置背景图像,但我想知道如何用代码编写。

q35jwt9p

q35jwt9p1#

有很多方法你可以使用。一种方法是将该方法放在UIViewController扩展中,并在要添加它的UIViewController子类中调用它。

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

然后:

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

zsohkypk2#

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

使用方法:现在你将在UIViewController的每个子类中都拥有这个函数

class MyNewClass: UIViewController {

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

}

相关问题