如何在swift上设置默认背景图像

时间:2015-12-21 21:53:19

标签: swift

我希望所有观看背景图片。我可以在我的控制器上执行此操作:

func viewDidLoad() {
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)
}

但我希望将其应用于所有控制器,一种解决方案是创建一个通用控制器,但我认为应该有更好的方法。我正试图在appDelegate上设置它

    self.window!.rootViewController!.view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)

但没有运气,有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义ViewController,使用您想要的背景进行初始化,每次需要新的ViewController时,它都将继承您已创建的另一个。

import UIKit

class SameBackgroundViewController: UIViewController {

var background: UIImageView!

init(imageName: String) {

    self.background = UIImageView(image: UIImage(named: imageName))
    super.init(nibName: nil, bundle: nil)
    self.background.frame = self.view.frame

}

convenience init() {

    let imageName = "background.jpg"
    self.init(imageName: imageName)

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.addSubview(background)

}
}

现在新的视图控制器就像这样

class NewViewController: SameBackgroundViewController {

}

希望我能提供帮助,这是我在StackOverflow上的第一个答案:)

答案 1 :(得分:1)

我能得到的最接近的是这个扩展名

extension UIViewController {
    func colorMe() {
        self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)
    }
}

现在您只需要在每个colorMe()颜色中调用ViewController

我知道您仍然需要在每个ViewController中编写一些代码,但至少您对整个应用程序的颜色进行了集中定义。

那够了吗?