首先,我很惊讶我在这里或谷歌都找不到这个问题。似乎其他人也可能需要此功能。所以,如果它毕竟是重复的,抱歉我搜索得很高。
我的故事板中有一个具有以下结构的应用程序:
- > Root Tab Bar控制器 - > (对于每个选项卡)SplitView Controller - >导航控制器 - > TableView控制器 - >细节视图控制器
我想在整个应用程序中设置相同的背景图像。 我的想法是在我的App Delegate中为Root Tab控制器设置该图像:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
方法。 :
var imageView = UIImageView(frame: self.window!.frame)
var image = UIImage(named: "bg.png")!
imageView.image = image
self.window!.rootViewController!.view.backgroundColor = UIColor.clearColor()
self.window!.rootViewController!.view.addSubview(imageView)
self.window!.rootViewController!.view.sendSubviewToBack(imageView)
首先是设置它的好地方?
如果我有最后一行代码,我现在遇到的问题:
self.window!.rootViewController!.view.sendSubviewToBack(imageView)
我没有看到图像。 (对于我的UITableView和UITableViewCells,我将opaque设置为false,将BackGroundColor设置为ClearColor)
如果我删除了最后一行,那么图片就在那里,但在所有内容之上,我看不到任何内容(没有标签栏,没有拆分视图......)
请帮我解决这个问题或者提供更好的方法。 TIA
答案 0 :(得分:1)
可能最简单的方法是:
将您的图像设置为您的UITabBarController的colorWithPatternImage
为backgroundColor
,如下所示:
[tabbarController.view setBackgroundColor:UIColor colorWithPatternImage:yourImage];
然后确保将其所有viewControllers的backgroundColor
视图设置为clearColor
。
答案 1 :(得分:0)
MarkHim的建议是解决方案的基础。然而它并没有完全发挥作用,我不得不添加一些东西让ik看起来不错。对于那些想要实现同样目标的人来说,这就是我必须做的事情:
继承我的UITabBarController和UINavigationController并实现一个ViewDidLoad,将它设置为clearColor的背景:
导入UIKit
class TMSplitViewController : UISplitViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.clearColor()
}
}
这个(并在IB中的所有地方设置backgroundColor到clearColor,我可以想到解决了大部分问题。
从masterView到detailView时,iPhone上出现了问题:动画效果不佳,还有人工制品。动画结束后看起来还不错。我发现解决这个问题并不是一个好方法,所以我通过在DetailViewController中添加以下代码来修复它:
if self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClass.Compact {
var imageView = UIImageView(frame: self.view.frame)
var image = UIImage(named: "bg.png")!
imageView.image = image
self.view.addSubview(imageView)
self.view.sendSubviewToBack(imageView)
} else {
self.view.backgroundColor = UIColor.clearColor()
}
因此,对于所有水平紧凑布局(所有iPhone,除了横向上的iPhone 6+),我们加载背景图像,而其他人则设置透明度。
现在看起来不错了