【发布时间】:2011-06-03 12:08:10
【问题描述】:
各位 ios 架构师,请帮我为以下 iphone/ipad 应用选择架构/技术。
该应用本身是一款金融应用,但我们希望该应用具有更多的游戏外观,因此我们可能不想使用可可小部件的内置外观。屏幕上的元素可能是某种斑点状的图像。
该应用程序本质上将有五个“斑点”状区域,在屏幕上均匀分布。其中一个斑点将居中并且比其他斑点大。在每个 blob 中都会有可点击的区域,这些区域会弹出“详细信息”和菜单操作 blob。这些 blob 也是图形对象,不能占据整个屏幕。这些斑点在弹出时应该很好地动画化。图形元素将生成几行文本,因此覆盖文本本身不能成为静态背景图像的一部分。
主要的用户交互将是在中心 blob 内滑动,显示概念上包含在 blob 底层数据存储中的项目的摘要。有时,用户会将项目拖放到其他 blob 之一。拖动时,该项目应由一条线跟踪,而当拖放到另一个 blob 上时,该项目应进行动画处理,使其看起来像是被“吸入”该 blob。
现在,您会为这个应用推荐什么样的技术? Cocoa 适合这种场景吗?我应该使用像 Cocos2D 这样的游戏框架吗?欢迎各种建议,包括示例代码sn-ps。
我意识到这个问题可能不像 SO 上的一般问题那么简单明了,但我希望你的答案会被比我更多的人使用。谢谢!
编辑(我的解决方案): 我最终在 UIKit 中完成了所有事情,这比我预期的要容易得多。 简要描述了我使用具有自定义样式和图像背景的 UIButton,这使我可以完全控制“项目”的视觉外观。我还发现操纵我的许多其他 UIView 的底层 CALayer 非常有用。它通常比使用 Core Graphics 编程从头开始绘制更容易。
另一个有用的是 UIGestureRecognizer:s。我发现它们对于处理“真实”手势(如滑动、长按等)非常有用,而且对于处理不是 UIControl 子类的 UIView 类的正常“点击”也很有用。两个例子是 UIImage、UILabel 和 UIView 本身。这样我就可以处理这些简单类的水龙头。例如,我可以使用普通的 UIView,修改它的 CALayer 以完全改变它的外观并仍然处理水龙头。使用这种技术,我根本不必在我的应用程序中对任何视图进行子类化。
动画也很简单,尽管我必须使用非公开的方法来使用“suck”动画,所以我的应用永远不会通过 App Store 审核。反正它只是一个原型,所以我不在乎。
当这个应用程序真正实现时,我可能会用Phonegap 包装的HTML5/JavaScript 来实现它。这样做的原因主要是对现有移动 Web 服务的重用以及跨平台的代码重用。使用 web 应用程序时,连接到现有的安全解决方案可能也更容易。
【问题讨论】:
标签: iphone objective-c ios ipad