私はiPhone用のピアノアプリを開発しています。スムーズにスクロールできるキーボード (Music Sampler など) を開発したいと考えています。
カスタム ビュー (1440px x 120px) を UIScrollView に配置しました。Quartz は遅すぎるので、OpenGL を使用したかったのです。しかし、1440px で OpenGL ビューを作成できませんでした。
より高速で大きなサイズのカスタム ビューを作成するアイデアはありますか?
ありがとうございました。
私はiPhone用のピアノアプリを開発しています。スムーズにスクロールできるキーボード (Music Sampler など) を開発したいと考えています。
カスタム ビュー (1440px x 120px) を UIScrollView に配置しました。Quartz は遅すぎるので、OpenGL を使用したかったのです。しかし、1440px で OpenGL ビューを作成できませんでした。
より高速で大きなサイズのカスタム ビューを作成するアイデアはありますか?
ありがとうございました。
これに OpenGL を使用するのはやり過ぎであり、悪い考えです。タッチ処理など、UIView で既に提供されているものを設定するのに多くの時間を無駄にします。
私が見た iPhone で標準外のキーボードを配置する方法は 2 つあります。1 つ目は、キーボード全体の表現を含む静的な UIImageView を作成し、このビュー内でタッチ イベントをキャプチャし、それらのタッチ イベントの場所を、事前にレンダリングされたキーがキーボード上にある場所に一致させることです。ユーザーが仮想キーの 1 つを押した場合、キーが飛び出していることを示すある種の画像をオーバーレイし、キープレスを処理します。これは、電卓アプリケーションの多くが採用しているアプローチだと思います。
別の方法は、各キーを個別の UIView として設定し、より大きなスーパービュー内に配置して、それぞれにタッチ イベントの処理を行わせることです。これは、ここに示されているインターフェースで行うことです。下部のメニューは 2 つのサブメニューで構成され、サブメニュー内の各メニュー ボタンは個別の UIView です。それらのコンテンツ (ボーダー、グロス、およびテキスト) は Quartz を介してレンダリングされますが、そのレンダリングは一度しか行われません。これらのビューはレイヤーに支えられているため、描画されたコンテンツをキャッシュし、非常にスムーズにアニメーション化およびスクロールします。タッチ イベントは、各メニュー項目のアクションをトリガーします。メニューの上半分は UIScrollView に含まれているため、スクロールしてさらに多くのオプションを表示できることに注意してください。
個人的には後者のアプローチを使用することをお勧めします。起動時にピアノのキーを動的に描画すると、毎回アートをやり直すことなく、さまざまなキーのサイズと形状を試すことができるからです。
のインスタンスのUIView
最大サイズは 1024x1024 です。OpenGL かどうかは関係ありません。スクロール可能な領域をそれよりも大きくすることはできますが、複数のタイル ビューから構築する必要があります。