2009-02-25 140 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