だから私はiPhone用のゲームを作成しています.透明なView Controllerを常にロードして、他のすべてのView Controllerの上に置きたいと思っています。この透明なビュー コントローラーは、ゲーム内時間、現在のお金などをすべてのビューの上部に表示します。このようにして、時計タイマーのすべてのコードを 1 つのファイルに保存し、すべての異なる OtherViewController.m ファイルにコピー/貼り付けする必要がないようにしたいと考えています。しばらく調査してきましたが、このView Controllerの背後にあるものをブロックしたり、新しいビューに移行したときにブロックされたりせずに、このView Controllerを作成する方法がわかりません。これを行う方法と可能な代替ソリューションに関する提案は大歓迎です。ありがとう!
3 に答える
継承を使用して、他のすべてのコントローラーで使用される親ビューコントローラーを構築できる場合があります-これを行う場合、表示領域全体をカバーする透明なビューは必要ないかもしれませんが、時間/スコアなどの項目を追加できます必要に応じて /HUD - 表示しているビューに応じてそれらを移動します。2 つの完全に不自然な例を使用すると、ゲームの飛行部分で、このすべての情報を画面の上部に空だけで表示したい場合があります。ゲームのアヒルの射撃部分にいる場合、アヒルを隠さないように、情報は画面の下部に表示する必要があります。
ビューを描画する基本クラスのView Controllerを試すことから始めますviewDidLoad:
カスタム コンテナ コントローラを使用してこれを行う必要があります。このコントローラーの上部には透明なビューがあり、コンテンツ ビュー コントローラーはこの透明なビューの下に表示されます。コンテナー ビューを使用して IB でこれを行うことができます。通常の UIViewController から始めて、必要なサブビューを含む透明な UIView を上部に追加します。次に、コンテナ ビューを追加し、画面全体のサイズにします。左側のシーン リストで、コンテナ ビューを上に移動して、メイン ビューのサブビュー リストの最初のビューにする必要があります (これにより、透明なビューが一番上に表示されます)。コンテナー ビューで取得した包含コントローラーをナビゲーション コントローラー (ナビゲーション バーをオフにして) に埋め込み、そこから他のコントローラーを追加することができます。
画像では透明なビューを青く着色して、見えるようにしています。コンテナー ビューは、その下のステータス バーまで伸びています。別のコントローラーに移動すると、それらは透明なビューの下にスライドし、静止したままになります。