2010-07-13 147 views
0

我的iPhone开发正在加紧一个阶段,我在看用户界面。我们正在考虑拥有一些漂亮的界面功能,比如从图库列表或其他类似的图像拖放图像。丰富的iPhone界面库组件?

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

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

回答

0

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

您可以使用Interface Builder或代码放置的基本UIKit元素旨在处理应用程序界面中最常见的情况。这些提供了一定程度的自定义,取决于它们的类型,但是你看到的通常是你所能得到的。在iPhone上,苹果公司甚至试图通过在审核期间拒绝应用程序,以与人机界面指南相矛盾的方式来保留这些库存元素的某些外观和感觉。

下一级是自定义的UIViews。通过在-drawRect:方法中使用Quartz绘图,可以使它们看起来像任何东西。您可以通过重写–touchesBegan:withEvent:等方法或使用新的UIGestureRecognizers来完成自己的触摸操作。鉴于您可以在这里完成的自定义级别,这是大多数人在调整界面时停止的地方。

通过使用Core Animation图层和动画,您可以比此低一些。通过在iPhone上使用CALayers而不是UIViews,你不会获得很多性能优势,但如果要制作在Mac和iPhone上使用相同代码的可视项目,它们可能很有用。如果您想做更多的事情而不是线性地在两个状态之间对视图进行动画制作,可能需要定制动画。您甚至可以使用Core Animation进行一些有限的3D工作。

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

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

+0

真棒和详细。非常感谢。 – mtrc 2010-07-23 09:59:33