0

ローテーションをサポートするユニバーサル アプリを作成しています。アプリの起動時に、インターネットからデータをダウンロードする必要があるため、起動イメージをアニメーション化したり、ラベルやオブジェクトを追加したりすることができないため、アクティビティ インジケーターを使用して UIViewController をプッシュします。

「読み込み中」の VC は起動時と同じ bg イメージを持っていてほしいのですが、ユニバーサル アプリであるため、単純な [UIImage imageNamed:@"Default.png"] を設定することはできません。iPhone またはiPad と、iPad を縦向きまたは横向きで起動できるかどうか (iPhone アプリは常に縦向きで起動します)。

問題は、どの Default.png が起動イメージとして使用されているかを知る方法はありますか? かもね

  • Default.png (網膜の場合は @2x)
  • Default-Portrait.png (網膜の場合は @2x)
  • Default-Landscape.png (網膜の場合は @2x)
  • デフォルト-568h@2x.png

方法があれば、現在のデバイスと方向を確認し、imageNamed を手動で設定します。

ありがとう、マックス

4

2 に答える 2

1

縦向きと横向きのサフィックスはありません。で向きを手動で確認する必要があり[[UIDevice currentDevice] orientation]ます。

iPad と iPhone/iPod Touch で異なる画像を表示する~ipadには、iPad の画像~iphoneの末尾と iPhone/iPod Touch の画像の末尾に追加できます。例:

Default~iphone.png は iPhone/iPod Touch にロードされ、Default~ipad.png は iPad にロードされます。

[UIImage imageNamed:@"Default.png"];

ただし、iPhone 5 の指定子もありません。そのため、手動で確認[[UIScreen mainScreen] bounds].size.heightして再度ロードする必要がありUIImageます。


完全な (テストされていない) 例:

UIImage *image;

if ([UIScreen mainScreen].bounds.size.height == 568.0)
{
    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
    {
        image = [UIImage imageNamed:@"Default-568h-Landscape"];
    }
    else
    {
        image = [UIImage imageNamed:@"Default-568h-Portrait"];
    }
}
else
{
    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
    {
        image = [UIImage imageNamed:@"Default-Landscape"];
    }
    else
    {
        image = [UIImage imageNamed:@"Default-Portrait"];
    }
}
// check suggested by Guy Kogus
if (image == nil) image = [UIImage imageNamed:@"Default"];

コメントで質問に答えるには:

いいえ、実行時に使用された起動イメージを照会することはできません。

于 2013-01-13T13:03:54.320 に答える
0

@2x サフィックスは自動的に選択されるため、心配する必要はありません。実装する必要があるいくつかのチェックがあります。

- (NSString *)defaultImage
{
    NSString *imageName = nil;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        if ([UIScreen mainScreen].bounds.size.height == 568.0)
        {
            imageName = @"Default-568h";
        }
        else
        {
            imageName = @"Default";
        }
    }
    else // ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {
        if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation))
        {
            imageName = @"Default-Landscape";
        }
        else // if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation))
        {
            imageName = @"Default-Portrait";
        }
    }
    return [UIImage imageNamed:imageName];
}
于 2013-01-13T13:07:10.853 に答える