每张视图的背景图片

时间:2015-09-08 11:07:14

标签: ios image swift background

首先,我很惊讶我在这里或谷歌都找不到这个问题。似乎其他人也可能需要此功能。所以,如果它毕竟是重复的,抱歉我搜索得很高。

我的故事板中有一个具有以下结构的应用程序:

- > 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

2 个答案:

答案 0 :(得分:1)

可能最简单的方法是: 将您的图像设置为您的UITabBarController的colorWithPatternImagebackgroundColor,如下所示:

[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+),我们加载背景图像,而其他人则设置透明度。

现在看起来不错了