我希望所有观看背景图片。我可以在我的控制器上执行此操作:
func viewDidLoad() {
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)
}
但我希望将其应用于所有控制器,一种解决方案是创建一个通用控制器,但我认为应该有更好的方法。我正试图在appDelegate上设置它
self.window!.rootViewController!.view.backgroundColor = UIColor(patternImage: UIImage(named: "background")!)
但没有运气,有什么建议吗?
答案 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
中编写一些代码,但至少您对整个应用程序的颜色进行了集中定义。
那够了吗?