使用相同背景图像的具有多个场景的视图控制器 (UIViewController) 情节提要
Posted
技术标签:
【中文标题】使用相同背景图像的具有多个场景的视图控制器 (UIViewController) 情节提要【英文标题】:View Controller (UIViewController) Storyboard with multiple scenes using same background image 【发布时间】:2016-10-19 01:17:43 【问题描述】:我正在开发一款游戏,其中第一个视图控制器将包含其余 30 个视图控制器的全部功能,其中其余的这些控制器将是第一个视图控制器的子类。我的计划是为我的应用程序中的所有 30 个视图控制器或场景使用单个故事板,它们都将使用相同的背景图像。为了让您了解我在说什么,我在此 Drawing.Storyboard 图像中仅显示 2 个场景,但计划在同一故事板中再显示 28 个场景。 Drawing.Storyboard
如果这个故事板中的所有 30 个场景都有相同的 UIView 背景图像,如何处理。我是否必须为场景中的每个视图添加相同的背景图像,或者只需将背景图像添加到第一个场景视图并使用容器视图其余部分?请注意,我过去从未使用过容器视图。
【问题讨论】:
使用扩展程序创建背景图像,只需从所有控制器调用它,您不需要将其添加到情节提要中 尝试在 Appdelegate 的窗口中设置图像,如下链接:***.com/questions/4915474/… Himanshu,如果我按照你的方式,你能发布答案或提供一个例子吗?谢谢。 【参考方案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 的子类。通过此设置,只要视图是第一个视图控制器的子类,您就可以使用尽可能多的视图。
【讨论】:
【参考方案2】:一种方法是,您可以创建UIViewController
的父/基类并将UIImageView
添加到self.view
in viewDidLoad()
因此,对于所有 30 个 ViewController,应该扩展到该基本 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 个子视图控制器都可以轻松使用
【讨论】:
如果我添加此代码并从第二个视图控制器的情节提要中删除具有我的背景图像的 bg_image 视图,bg_image 永远不会加载到我的第二个视图控制器中,它是第一个视图控制器的子类。任何其他或进一步的建议!谢谢。 第一个视图控制器是什么意思?基本控制器? 基本上我有 ViewControllerA 和 ViewControllerB。我需要的一切都在 ViewControllerA 或基础中,而 ViewControllerB 是 ViewControllerA 的子类。如果我在 ViewControllerB 中添加此代码,图像永远不会加载。基本上 ViewControllerB 有它自己的 UIView 场景。当我删除该 UIView 并使用此代码加载 bg_image 时,它永远不会加载。以上是关于使用相同背景图像的具有多个场景的视图控制器 (UIViewController) 情节提要的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 的多个视图中使用 UINavigationController 中的固定背景图像?