我必须为拥有基于网络的系统的公司制作iPhone应用程序,并且想要移动。事先知道屏幕的UI会经常变化(添加新的标签,按钮等)。此外,屏幕上的许多元素都有 If(条件)然后(可见)其他(隐藏)类型的情况。例如, if(user.isMember)then(showLoginButton)else(showRegisterButton)对于想要将我们的产品作为移动应用程序使用的公司来说,这是一个相当常见的场景。
现在的挑战是如何编写灵活的UI。如果我采用标准的UIView类型方法并添加标签,按钮等,它本质上就变成了静态的。此外,由于很多元素(例如,在上面的例子中,loginButton,registerButton,retrievePasswordButton)是重叠的(因为它们应该在画布上的确切位置),Interface Builder看起来很混乱。
我能看到的一个解决方案是在UIWebView中使用HTML内容。考虑到HTML浏览器是根据 Forms 的概念定义的,它具有逻辑意义。对本地存储的html文件中的值进行搜索/替换会有一些开销(现在称之为模板),但是猜测提供的灵活性是值得的。
我想邀请这种方法的优点/缺点,以及过去可能为您制作灵活用户界面的任何其他方法。
答案 0 :(得分:0)
至少有两种基本方法,其中包括许多方法。
如您所述,第一个是为每个表单使用存储的HTML5 / CSS / Javascript,并在嵌入式UIWebViews中运行它们。但是没有必要在设备上进行搜索/替换。不要修改模板,只需为任何必须更改或更新的表单下载一个完整的新“网页”。非常灵活,如果您需要的所有元素都有效“可网络化”。
第二种方法是使用数据驱动的UI(这种技术上有Apple WWDC 2010视频)。基本上,对于每个视图和每个UI元素,不是将它放在笔尖中或从硬编码参数创建它,而是读取ar / w数据库以获取创建元素所需的一切:大小,位置,标题,颜色,值,什么它调用的方法等。要修改,请下载对此数据库的更新。
如果你需要一个可更新的“原生”用户界面和应用程序逻辑,你可以混合使用以上两种方法:一个数据驱动的UI引擎,带有可选的字符串参数,包括Javascript,用于调用自定义逻辑的任何对象,计算,状态变化等