更丰富的iPhone接口与库组件?

时间:2010-07-13 15:45:41

标签: iphone objective-c interface-builder

我的iPhone开发正在提升一个档次,我正在关注用户界面。我们正在考虑使用一些不错的界面功能 - 例如从图库列表中拖放图像或类似功能。

基本的iPhone界面有多远?大多数人都创建自己的界面和代码,如果有的话,那里的基础是什么? CoreGraphics中? OpenGL的?

我不想重新发明轮子,但如果有人已完成这项工作,我也不想采取过于复杂的选项。

1 个答案:

答案 0 :(得分:0)

基于Cocoa的接口有几层。通常,我建议在最高级别的抽象工作,以满足您的演示和性能需求。

您可以使用Interface Builder或代码放置的基础UIKit元素旨在处理应用程序界面中最常见的情况。这些提供了一定程度的定制,取决于他们的类型,但你看到的通常是你得到的。在iPhone上,Apple甚至试图通过在审核过程中拒绝使用与人机接口指南相悖的方式的应用来保持这些库存元素的某种外观和感觉。

下一级是自定义UIViews。通过在-drawRect:方法中使用Quartz绘图,可以使它们看起来像任何东西。您可以通过覆盖–touchesBegan:withEvent:等方法或使用新的UIGestureRecognizer进行自己的触摸处理。鉴于您可以在此处执行的自定义级别,这是大多数人在调整其界面时停止的地方。

通过使用核心动画图层和动画,您可以比这更低一点。通过在iPhone上使用CALayers而不是UIViews,你在性能方面没有获得太多收益,但如果你想制作在Mac和iPhone上使用相同代码的视觉项目,它们会非常有用。如果您想要执行的操作不仅仅是线性地在两个状态之间为视图设置动画,则可能需要自定义动画。您甚至可以使用Core Animation进行一些有限的3D工作。

最后,OpenGL ES用于显示完整的3-D场景和真正高性能的图形显示。这与您在处理iPhone显示系统时所获得的金属差别很大,并且它显示了您必须编写的代码的数量和复杂性。对于复杂的3-D工作,这是您需要使用的,但对于2-D甚至是基本的3-D,我建议首先查看Core Animation,因为它可以为您节省代码。如果性能不可接受,那么你应该去OpenGL ES。

现在,仅仅因为您需要使用其中一种技术来处理界面的一部分并不意味着它不能与其他界面共存。 UIViews由核心动画层支持,甚至OpenGL ES渲染到CALayer中,可以放置在视图中。同样,使用适合您界面部分的最高抽象级别。