使用Storyboard为iPhone应用设置固定背景

3

似乎找不到解决一个问题的方法——即一个轻量级的图形,在用户从场景到场景进行导航时保持静态。已经在论坛上搜寻了几天,但大多数答案都指向MainWindow.xib,而这并不适用于Storyboard项目。希望得到任何建议。

4个回答

6

感谢@Max的建议,我整理出了以下内容。由于我刚接触这个领域,如果这段代码需要调整,请在评论中指出,以免误导他人。

在AppDelegate的didFinishLaunchingWithOptions方法中添加以下代码将图片添加到应用程序的主窗口:

UIImageView *myGraphic = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myGraphic.png"]];
[self.window.rootViewController.view addSubview: myGraphic];
[self.window.rootViewController.view sendSubviewToBack: myGraphic];

然后,为了使您的视图透明以便背景显示出来 - 在您的视图控制器类中,添加到viewDidLoad方法:

self.view.backgroundColor = [UIColor clearColor];

(请注意,如果您尝试通过属性检查器中的alpha属性来降低视图的透明度,它将使该视图上的所有内容 - 按钮等 - 透明,这就是为什么需要通过编程来完成。)
当然,它没有经过彻底测试。但目前它正在工作,并且非常美观。谢谢大家。

1
你可以尝试手动将UIImageView添加到你的窗口中,然后为所有其他视图设置0背景透明度。

谢谢您的回复,但我不确定您在这里所说的“窗口”是什么意思。假设我有一个带有四个链接视图的导航控制器 - 您是说我应该将背景图形放在第一个视图中,并将其他三个设置为透明吗?(我已经尝试过了,但没有成功。)如果我错过了一些显而易见的东西,请原谅,因为我是一个完全的新手。 - resedasue
我的意思是[UIApplication sharedApplication].keyWindow。您只需在程序启动时添加所需图像的视图,然后将所有视图的backgroundColor设置为[UIColor clearColor]。 - Max
你太棒了 - 这让我走上了正确的道路。我已经详细说明了我的做法,希望能为其他人节省一两个小时的时间...再次感谢。 - resedasue

1

有一种方法可以实现它——也许不是最好的方法——那就是通过子类化UIView,在Storyboard中为所有的viewControllers设置一个自定义的UIView实例,该实例包含您作为背景图形的UIView类。


哇,你们真快...感谢建议。我认为这将产生类似于我所做的效果——只是将图形添加到每个场景中...问题是它是一个裁剪过的图形,坐落在角落里,所以当场景从一个动画到另一个时,图形会在顶部飞过去,展现其所有时髦、裁剪过的光辉,看起来...不太好。 - resedasue

0
如果您要以编程方式解决此问题,请在每个视图控制器中设置以下内容:

[[self view] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

viewDidLoad

我相信一些微调可以让你从应用程序委托中应用这个原则,或者使用单例模式在整个程序中应用。

然而,使用这种解决方案,你仍然需要在每个想要应用这种样式的视图控制器中进行一些方法调用。


谢谢您的建议 - 我尝试过了,但它会产生与将图像视图拖到每个场景上相同的效果,图像会随着场景动画而移动。 - resedasue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接