2009-02-25 139 views
1

我正在开发用于iPhone的钢琴应用程序。 我想开发流畅的滚动键盘(如音乐取样器)。在大尺寸自定义视图中快速绘图

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

任何想法,使更快的&大尺寸的自定义视图?

谢谢。

回答

0

UIView的任何实例的最大尺寸都是1024x1024。无论是否OpenGL都无所谓。你可以有一个比这更大的可滚动区域,但是你必须从多个平铺视图来构建它。

0

对此使用OpenGL将是矫枉过正和坏主意。你会浪费很多时间来设置UIViews中已经为你提供的东西,比如触摸处理。

有两种方法可以在我看到的iPhone上布置非标准键盘。首先是创建一个静态UIImageView,其中包含整个键盘的表示形式,在该视图中捕获触摸事件,并将这些触摸事件的位置与键盘上的预渲染键的位置进行匹配。如果用户点击了其中一个虚拟键,则会覆盖某种图像,显示出现在您身边的按键,并处理按键。我相信这是很多计算器应用程序所采用的方法。

另一种方法是将每个键设置为单独的UIViews,将它们放置在一个更大的超级视图中,然后分别处理它们的触摸事件。这是我在界面shown here中所做的。下面的菜单由两个子菜单组成,在子菜单内,每个菜单按钮都是独立的UIViews。他们的内容(边框,光泽和文字)通过Quartz渲染,但渲染只发生一次。由于这些视图是分层支持的,因此它们缓存其绘制的内容并进行动画和滚动非常平滑。触摸事件触发每个菜单项的动作。请注意,菜单的上半部分包含在UIScrollView中,以便您可以滚动以获取更多选项。

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

+0

梦幻般的主意! 我会试试后一个。 谢谢! – 2009-02-26 02:37:09