2

私が最初にiOS用のプログラミングを始めたとき(Cocos2dを使用)、iPhone用に320x480の画面サイズに基づいてハードコードされた座標の束を使用しました。少なくとも基本バージョンのiPadとiPadminiを含める必要があることに気づきました。

私はこれらを読みました:

cocos2d(しかし、これが最善の方法かどうかはわかりませんか?) cocos2d:iPhoneアプリをユニバーサルアプリに変換します

座標の変換: iPhoneの画面サイズからiPadの画面サイズに座標を変換します

iphoneからipadへの変換:http: //iphonedevelopment.blogspot.com/2010/04/converting-iphone-apps-to-universal.html

ユニバーサルアプリの作成に関するAppleのドキュメント:http: //developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW24

  1. ハードコードされた値を使用したコードのすべての部分を編集せずに、グラフィック表示をiPhoneからiPadに変換する簡単な方法はありますか?(50スポット、すべて1つのファイルに)
  2. iOS / Cocos2D座標を使用した将来のコーディングのベストプラクティスは何ですか?私がすべき

    #define SPACE_SHIP_X_IPAD 384

    #define SPACE_SHIP_X_IPHONE 160

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){

    `[ship.setPosition ccp:(SPACE_SHIP_X_IPHONE,0)];`
    

    } else {

    `[ship.setPosition ccp:(SPACE_SHIP_X_IPAD,0)];`
    

    }

    (ちなみに、このコードを「#」記号でフォーマットする方法を知っている人は、plzが上記のコードをフォーマットする方法を教えてくれますか?)

  3. 2つの異なるアプリを作成することをお勧めします-1つはiPhone用、もう1つはiPad用ですか?または、1つのアプリのみのこの普遍的なアプローチで、Appstoreに送信するときに配布タイプを選択しますか?

  4. MacバージョンのアプリはiPhoneおよびiPadのアプリストアと同じ配布チャネルですか?Macで配布することの長所と短所は何ですか?(グラフィックスは巨大なiMacのようなものに対応しなければならないので、それは良くないと思いますか?)
  5. 念のために言っておきますが、私のアプリファイル(通話などのiPhone固有のものは何も使用していません)は、余分な作業をしなくてもiPodとiPad Miniで動作しますよね?

どんな助けでも大歓迎です。私はすべての良い試みに賛成します

4

2 に答える 2

4

あなたのアプローチは非常に複雑なようです。ユニバーサルアプリケーションの作成には、通常、位置値をハードコーディングすることはなく、デバイスの境界に基づいてこれらの位置値を計算する必要があります。

例えば:

//Button in center for universal
CGPoint buttonOffset = CGPointMake( ([[UIScreen mainScreen] bounds].size.width - button.frame.size.width) / 2, ([[UIScreen mainScreen] bounds].size.height - button.frame.size.height) / 2);

button.frame = CGRectMake(buttonOffset.x, buttonOffset.y, button.frame.size.width, button.frame.size.height);

同様の概念を使用して、画面の境界に相対的な位置を持つボタン(または出荷)を作成します。これはあなたに多くの時間と悲しみを節約するでしょう。

注意すべき点の1つは、画面の「境界」はデバイスの向きを考慮しないということです。複数の方向をサポートしたい場合は、そのロジックを処理するユーティリティメソッドを作成すると便利です。

何かのようなもの:

+ (CGSize) deviceSize {
    CGSize size;
    if(UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])){
        size = CGSizeMake([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width);
    } else {
        size = CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);        
    }
    return size;
}

すべての値を変更する必要がないように、簡単な解決策が必要なことはわかっていますが、弾丸を噛んで値を変更することをお勧めします。長期的には大いに役立ちます。このアプリケーションだけでなく、このプラクティスは、将来作成するすべてのアプリケーションに役立ちます。

ユニバーサル用に2つの異なるアプリを作成することをお勧めしますか? いいえ、お勧めしません。xcodeプロジェクトを作成するときに「ユニバーサル」を選択し、既存のプロジェクトで変更することもできます。2つのビルドまたはバイナリを作成する必要もありません。Appleはそれをユニバーサルとして認識し、すべてのデバイスでストアで利用できるようにします。ただし、さまざまな画面サイズとピクセル密度に対応するには、スプラッシュ画面の複数のバージョンを作成する必要があります。

MacバージョンのアプリはiPhoneおよびiPadのアプリストアと同じ配布チャネルですか?ある種...OSXバイナリを自分でパッケージ化して配布できるため、アプリストアにデプロイでき、自由度が増します。ただし、そうでないCocoaTouchライブラリを使用する可能性が高いため、別のアプリを作成する必要があります。 Macでサポートされています。レンダリングやゲームロジックなど、CocoaTouchを使用しない機能を保持する必要があります。OSXにデプロイする場合、大きな画面サイズは最も心配する必要はありません。利点:より広い聴衆。短所:アプリ/ゲームを設計する際には、できるだけ多くのコードを再利用してすべての画面に対応できるように、多くの計画が必要です。

念のために言っておきますが、私のアプリファイル(通話などのiPhone固有のものは何も使用していません)は、余分な作業をしなくてもiPodとiPad Miniで動作しますよね? ええと...いくつかの追加作業ホーム画面アイコンとスプラッシュ画面用のいくつかの追加の画像アセットを使用すると、うまくいくでしょう。

于 2012-11-16T01:22:28.070 に答える
1

これは、iCloudを介して共有されるデータファイルを使用して行い、データが両方のデバイスの適切な場所に表示されるようにします... X *=768/320およびY*= 1024/480。iPadの解像度からiPhoneに戻るには、代わりに除算します。かける。シンプルで正確です。次に、必要に応じて、データが構成されている座標のセットを記録します。

于 2012-11-16T02:17:22.963 に答える