UINavigationController - 在所有视图中保留背景图像

时间:2012-10-27 00:07:47

标签: iphone ios uinavigationcontroller

有没有办法让背景图像在导航控制器中的所有视图中保持不变?目前我在每个视图的viewDidLoad方法中加载相同的背景,但这显示了从视图导航到视图时的背景图像移动。我宁愿只是背景“幻灯片”开/关屏幕的视图 infront 的内容,但背景保持静止。这是我当前的背景图片加载代码:

UIImageView *background = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
background.image = [UIImage imageNamed:@"InfoBackground.png"];
[self.view addSubview:background];
[self.view sendSubviewToBack:background];
[background release];

谢谢!

3 个答案:

答案 0 :(得分:28)

嗯,也许如果你看一下documentation(向下滚动到图2),你就会知道你在处理什么。因为您要为每个被推入UINavigationController的视图控制器设置背景图像,所以您将获得该动画。您需要做的是将背景图像设置为导航控制器本身。

我相信myNavController.view insertSubview:myImageView atIndex:0应该有用。如果您的图像需要准确填写内容视图后面,您可以根据导航栏和工具栏的坐标和/或高度设置框架坐标,可以通过导航控制器的属性访问。如果没有,只需将帧设置为超视图的边界。

让我知道它是怎么回事。

编辑:哦,请注意,您需要确保每个视图控制器都具有透明背景。

答案 1 :(得分:1)

我认为更好的想法是在窗口上放置背景图像并将所有视图(所有viewcontroller的视图)背景颜色设置为清除颜色 [UIColor clearColor]

答案 2 :(得分:1)

如果你想要背景图像静态,那么只有一种方法,但我不知道是否可能,如果我们将图像放在窗口中并使导航控制器透明,那么无论你做什么,它都会保持静止。因为我们不会在推或弹时改变窗口。

我只是建议尝试这种方式,我没有尝试过这样的。