8

私はiOS開発では比較的新しいです。

私は現在、iPad Retina、iPad、iPhone 5、および iPhone 4s/4 で利用できる cocos2d ライブラリを使用してアプリを構築しています。

すべての画像のセットアップが完了し、命名規則を理解しようとしています。

私を助けることができるガイドを知っている人はいますか?

background.png があるとします。

私が理解していることから:

  • background.png -> iPhone (非 Retina/フォールバック)
  • background-hd.png -> iPhone 4s/4 (網膜)
  • background-ipad.png -> iPad (非 Retina)
  • background-ipadhd.png -> iPad (網膜)

そして、他のすべてのファイルに同じ命名規則が使用されますか? 例えば:

  • 任意のボタン.png -> iPhone (非網膜/フォールバック)
  • 任意のボタン-hd.png -> iPhone 4s/4 (網膜)
  • 任意のボタン-ipad.png -> iPad (非網膜)
  • 任意のボタン ipadhd.png -> iPad (網膜)

iPhone 5 ファイルの名前は何ですか?

私は少し検索しましたが、これに関する具体的なガイドが見つからないようです。

ありがとうございました!

4

4 に答える 4

10

OS には、使用できる命名規則があります (そして強制します。つまり、ファイルを として参照するだけで済みます@"fileName")。ドキュメントはこちらから入手できます

  • fileName.png -> iPhone (非 Retina/フォールバック)
  • fileName@2x.png -> iPhone 4s/4 (網膜)
  • fileName~ipad.png -> iPad (非 Retina)
  • fileName@2x~ipad.png -> iPad (網膜)

注: ~iphone も存在し、~ipad を使用する/使用する代わりに使用できます。~ipad と ~iphone の両方を使用すると、Apple が導入する可能性のある 3 番目のイディオムから保護されます。テレビ

iPhone 5 に関しては、OS は命名スキームを強制しません。ただし、起動イメージと同じスキームを使用するのが賢明でしょう。

  • ファイル名-568h@2x.png -> iPhone 5

アプリ全体でこれを簡単に処理するには、カテゴリを作成し、iPhone 5 に適した画像と通常のサイズの画像があることがわかっている場所で使用します。以下のような簡単なバージョンを作成できます。

UIImage+iPhone5Image.h

#import <UIKit/UIKit.h>

@interface UIImage (iPhone5Image)

+ (UIImage*)iPhone5ImageNamed:(NSString*)imageName;

@end

UIImage+iPhone5Image.m

#import "UIImage+iPhone5Image.h"

#define IsIPhone5() ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568)

@implementation UIImage (iPhone5Image)

+ (UIImage*)iPhone5ImageNamed:(NSString*)imageName
{
    if (IsIPhone5()) {
        NSString* newImageName = [NSString stringWithFormat:@"%@-568h", imageName];
        return [UIImage imageNamed:newImageName];
    }
    else {
        return [UIImage imageNamed:imageName];
    }
}

@end
于 2013-02-13T17:55:29.813 に答える
3

標準の UIKit バージョンではなく、cocos2d 命名規則に従っているようです。これらは異なり、cocos2d を使用している場合は、UIKit ではなく cocos2d サフィックスを使用することをお勧めします。

それらは次のとおりです。

  • Retina 以外の iPhone (サフィックスなし)
  • 網膜iPhone-hd
  • 非網膜 iPad-ipad
  • 網膜 iPad-ipadhd
  • iPhone 5-iphone5-iphone5hd

cocos2d メソッドで使用されるデバイスに基づいてロードするすべてのファイルには、次のようにサフィックスを付けることができます。

于 2013-02-13T20:26:37.660 に答える
2

わかりました、cocos2d 自体が iphone5 をサポートするようになりました。

-hd.png for iPhone HD 
-ipad.png for iPad 
-ipadhd.png for iPad HD
-wide.png for iphone 5
-widehd.png for iPhone 5 HD

Cocos2d のバージョンが古い場合は、次を使用します。

static inline NSString *i5res(NSString * data)
{
    if(IS_IPHONE5)
    {
        return [data stringByReplacingOccurrencesOfString:@"." withString:@"-whd."];
    }

    return data;
}
//usage
CCSprite *bg = [CCSprite spriteWithFile:i5res(@"bg.png")];
于 2013-04-12T17:13:54.763 に答える
0

コンパイラが適切な画像を自動的に選択できるようにするには、標準 (非網膜) 画像に image.png という名前を付け、網膜画像に image@2x.png という名前を付けます。次に、コードで標準のものを参照してください。残りはコンパイラが行います。したがって、画像を設定する場合は、次のようになります。

UIImage *anImage = [UIImage imageNamed:@"image.png"];

アプリは iPhone 5 用に別の画像サイズを自動的に選択しないため、iPhone 5 用の特定の命名規則はありません。次のようなコードでそれを行う必要があります。

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenHeight = screenRect.size.height;

if([[UIScreen mainScreen]bounds].size.height == 568){
    UIImage *signUp = [UIImage imageNamed:@"signup-bg-568h.jpg"];
    [signUpImage setImage:signUp];
}
else{
    UIImage *signUp = [UIImage imageNamed:@"signup.jpg"];
    [signUpImage setImage:signUp];
}
于 2013-02-13T17:55:18.463 に答える