我正在开发一款游戏,其中第一个视图控制器将包含30个视图控制器中其余部分的完整功能,其中这些控制器的其余部分将是第一个视图控制器的子类。我的计划是为我的应用程序中的所有30个视图控制器或场景使用单个故事板,它们都将使用相同的背景图像。为了让你知道我在谈论什么,我只在这个Drawing.Storyboard图像中显示2个场景,但计划在同一个故事板中再增加28个场景。 Drawing.Storyboard
如果此故事板中的所有30个场景都具有相同的UIView背景图像,那么如何处理它。我是否必须为场景中的每个视图添加相同的背景图像,或者只是将背景图像添加到第一个场景视图中,然后使用容器视图?注意我以前从未使用容器视图。
答案 0 :(得分:1)
经过" h44f33z"的进一步研究和建议后,以下内容无需在故事板中使用UIView图像即可。
ViewController A
class ViewControllerA: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Load background image for all views
let bgImageView = UIImageView(frame: UIScreen.main.bounds)
bgImageView.image = UIImage(named: "bg_image")
self.view.addSubview(bgImageView)
}
}
查看控制器B
class ViewControllerB: ViewControllerA {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
ViewController B中没有任何东西可以做,因为它是ViewController A的子类。只要view是第一个视图控制器的子类,只要有这个设置就可以使用尽可能多的视图。
答案 1 :(得分:0)
这样做的一种方法是,您可以创建UIViewController
的父/基类,并在UIImageView
self.view
添加到viewDidLoad()
因此,对于所有30个ViewControllers,应该扩展到该基本viewController。它看起来与此类似
class StartViewController: BaseViewController
您的基类viewDidLoad
将类似于
override func viewDidLoad() {
super.viewDidLoad()
let bgImageView = UIImageView(frame: UIScreen.mainScreen().bounds)
bgImageView.image = UIImage(named: "bg-image")
self.view.addSubview(bgImageView)
}
您可以在基类中添加更多函数或处理事件,并且所有30个子视图控制器都可以轻松使用它