1

我正在为 iPhone 开发钢琴应用程序。我想开发可平滑滚动的键盘(如 Music Sampler)。

我在 UIScrollView 中放置了一个自定义视图(1440px x 120px)。我想使用 OpenGL,因为 Quartz 太慢了。但我无法在 1440 像素中制作 OpenGL 视图。

有什么想法可以制作一个更快、更大尺寸的自定义视图吗?

谢谢你。

4

2 回答 2

0

为此使用 OpenGL 将是矫枉过正和一个坏主意。您将浪费大量时间来设置 UIView 中已经为您提供的东西,例如触摸处理。

我见过有两种在 iPhone 上布置非标准键盘的方法。首先是创建一个静态 UIImageView ,其中包含整个键盘的表示,在此视图中捕获触摸事件,并将这些触摸事件的位置与键盘上预呈现的键的位置相匹配。如果用户按下您的一个虚拟键,您会覆盖某种图像,显示该键向您弹出,然后您处理按键。我相信这是许多计算器应用程序采用的方法。

另一种方法是将每个键设置为单独的 UIView,将它们布置在更大的超级视图中,并让每个键处理它们的触摸事件。这就是我在此处显示的界面中所做的。下部菜单由两个子菜单组成,在子菜单中,每个菜单按钮都是单独的 UIView。它们的内容(边框、光泽和文本)是通过 Quartz 渲染的,但渲染只发生一次。因为这些视图是有图层支持的,所以它们会缓存绘制的内容,并且动画和滚动非常流畅。触摸事件触发每个菜单项的操作。请注意,菜单的上半部分包含在 UIScrollView 中,因此您可以滚动查看更多选项。

我个人的建议是使用后一种方法,因为在启动时动态绘制钢琴键可以让你尝试不同的键大小和形状,而不必每次都重做你的艺术。

于 2009-02-25T18:52:24.100 回答
0

的任何实例的UIView最大尺寸为 1024x1024。不管是不是OpenGL。您可以拥有比这更大的可滚动区域,但您必须从多个平铺视图构建它。

于 2009-02-27T00:24:01.983 回答