11

我有一个 iPhone 应用程序,它具有不同的皮肤风格,具有不同的艺术资产和声音,但代码都是相同的。

我已经设置了多个目标,但我遇到的问题是我必须有一组不同的 UIBuilder nib 文件,每个目标每个视图一个,设置为指向该目标的正确艺术。

这有点令人沮丧,因为如果我对一个 nib 文件进行更改,我必须在所有其他 nib 文件中手动进行相同的更改、相同的连接等。我还为不同的皮肤添加了不同名称的所有资产,这样它们就不会在项目中发生冲突。所以,如果我有目标 A 和 B,我有a_main_menu.png, b_main_menu.png... a_FooViewController.xib, b_FooViewController.xib... 等等。

有没有办法制作一个指向具有相同名称的资产的 nib 文件,但它们位于......嗯,不同的捆绑包中?这就是捆绑包的用途吗?我可以想象在我的代码中修复这样的东西(可能在加载之前在笔尖中搜索并替换 A 为 B 甚至可能已经足够好了),虽然我还没有尝试过,但这很难看。

对于我的第一组应用程序来说,这是一个易于管理的策略(尽管远非最佳),但随着我的东西变得越来越复杂,让我的构建器文件保持同步变得非常困难,而且这不是一种非常干燥的工作方式。除了放弃 uibuilder 并在代码中创建我的视图之外,还有更好的方法吗?

如果这在 xcode/builder 级别上工作会很好,所以 builder 会尊重我当前的目标并在我工作时展示该目标的艺术......但我也许可以没有它,就像我可以选择运行时当前的一组艺术作品,我只能在 builder 中使用一组作品。我也可以使用一组笔尖,通过一个目标并在构建之前手动替换所有艺术作品,但这也不是很好。

最好的情况是,如果我可以混合使用这两种策略——例如,如果我有一个目标,它具有多个视图中的一个视图,而必须以不同的方式布局……但这是可选的。

我在问正确的问题吗?

谢谢!

4

5 回答 5

5
于 2009-11-21T16:35:57.330 回答
1

Assuming that each app only needed one skin at a time, and that you are creating multiple apps with different themes, I would create a branch in my source control and then replace the necesary assets. You keep a master branch with all default assets and then you merge code changes from the master into your skinned branches keeping everything in sync.

Git makes this super easy.

于 2009-02-11T22:44:55.213 回答
0

我认为最好的选择是使用 git 之类的东西。

如果您使用 git,您可以拥有一个包含主源代码和逻辑的主分支,并拥有针对应用程序的每种特定风格具有不同数据/图像集的子分支。在这个解决方案中,XCode 甚至不知道发生了什么。

于 2009-11-21T15:17:12.700 回答
0

这对我有用:

1个项目。2个目标a,b。a、b 的 2 个图像文件夹。

controller.m 及其 nib 文件适用于这两个目标。

为目标 a 和 b 的图像创建单独的文件系统文件夹。

将一个图像文件夹导入到目标 a(“将文件添加到 xy”->“添加到目标 a/b”),另一个到目标 b。确保使用“为添加的文件夹创建组”选项。不要选择“文件夹引用”选项。

当我构建目标 a 时,我得到一个包含文件夹 a 中图像的应用程序;当我为 b 构建时,它使用文件夹 b 来保存图片。

于 2012-10-18T10:47:41.023 回答
0

我认为这就是 viewDidLoad 的用途,要自定义更多,在这里您可以更改图像路径。

于 2009-11-21T15:30:12.143 回答