一个基础应用程序,用于具有不同视图和布局的多个品牌?

时间:2012-09-02 09:20:33

标签: iphone ios xcode target

我已经构建了一个应用程序,可以使用不同的Internet资源进行一些计算和通信。我用三个公司客户的标签栏导航栏标记了我的应用程序,唯一的变化是图片和着色的差异。所以我创建了三个目标并适当地处理了目标成员资格。

到目前为止,这么好。但是如果我想为客户自定义整个视图布局甚至应用程序的导航呢?例如,下一个客户端可以要求基于导航控制器的交互,而不是基于标签栏的导航。或者在一个视图中添加一个标签。或者使用饼图而不是条形图来显示某组数据。

如果你把所有不同的目标放在一个项目中,所有这些if / else if / else if / else if / else if / ... block of code,会导致非常难看的代码。如果我有100个客户怎么办?

现在问题是:在我的想象中,一个理想的概念就是如果我可以创建一个名为“ Base ”的Xcode项目,它可以完成所有特定于域的计算,通信等等(当然)并具有基本的非品牌UI。这样,可以在一个中央存储库中为所有客户端轻松维护代码。然后,对于每个客户端,我创建一个全新的Xcode项目,导入或引用“ Base ”项目,当我点击Build而不进行任何自定义时,它已经构建了我的非品牌,但完全功能应用。如果客户端请求修改布局,我将相应的视图子类化。当再次点击Build按钮时,它应该显示“ Base ”应用程序,但是某个子类视图取代了标准布局。

可以在Xcode中优雅地完成“覆盖”视觉效果的“ Base ”应用程序的想法吗?

2 个答案:

答案 0 :(得分:0)

我去年为客户做了这个。我有一个框架应用程序使用与应用程序项目共享的标头。它几乎就像一个协议,因为应用程序“提交”提供一些字符串,视图和图像。您可以从一个相当简单的应用程序项目开始,当您发现需要更多变化时,可以将代码移出框架到应用程序中。标题是一个类方法专用类的实现,它可以提供应用程序特定数据。

在我的情况下,我们有7个左右的应用程序(现在都在商店中)但在应用程序正在使用它的框架中没有一点知识。

作为应用程序启动时的示例,框架可能会查询是否应该播放声音,如果是,请询问该资源 - 与图像和其他变体相同。

答案 1 :(得分:0)

一种方法是创建一个静态库。您可以将所有常用的东西填充到static library中,然后在其他项目中引用它。

也许大部分内容都存在于静态库中,而您的应用项目中只有一个或两个文件。如果应用程序之间的更改量非常小(例如:您在帖子中提到的样式更改),这将很有效。

另一种技术是使用生成的和模板代码。我们的想法是,您有自己的样板代码,并运行一个脚本,根据提供的颜色,徽标,字符串等设置项目和资源。

最后,您可能希望根据您的要求使用上述两种方法的组合。