使用相同背景图像的多个场景的View Controller(UIViewController)故事板

时间:2016-10-19 01:17:43

标签: ios swift xcode uiviewcontroller storyboard

我正在开发一款游戏,其中第一个视图控制器将包含30个视图控制器中其余部分的完整功能,其中这些控制器的其余部分将是第一个视图控制器的子类。我的计划是为我的应用程序中的所有30个视图控制器或场景使用单个故事板,它们都将使用相同的背景图像。为了让你知道我在谈论什么,我只在这个Drawing.Storyboard图像中显示2个场景,但计划在同一个故事板中再增加28个场景。 Drawing.Storyboard

如果此故事板中的所有30个场景都具有相同的UIView背景图像,那么如何处理它。我是否必须为场景中的每个视图添加相同的背景图像,或者只是将背景图像添加到第一个场景视图中,然后使用容器视图?注意我以前从未使用容器视图。

2 个答案:

答案 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个子视图控制器都可以轻松使用它