iOS图像命名约定

我在iOS开发中比较新。

我目前正在使用可用于iPad Retina,iPad,iPhone 5和iPhone 4s / 4的cocos2d库构build应用程序。

我得到了我所有的图像设置,我正试图弄清楚命名约定。

有谁知道有一个可以帮助我的指导?

说我有一个background.png。

据我所知:

  • background.png – > iPhone(非视网膜/后备)
  • background-hd.png – > iPhone 4s / 4(视网膜)
  • background-ipad.png – > iPad(非视网膜)
  • background-ipadhd.png – > iPad(视网膜)

所有其他文件都使用相同的命名约定? 例如:

  • arbitraryButton.png – > iPhone(非视网膜/后备)
  • arbitraryButton-hd.png – > iPhone 4s / 4(视网膜)
  • arbitraryButton-ipad.png – > iPad(非视网膜)
  • arbitraryButton-ipadhd.png – > iPad(视网膜)

我怎么命名iPhone 5文件?

我已经search了一下,似乎无法find任何有形的指导。

谢谢!

操作系统有一个命名约定,您可以使用(并为您执行,这意味着您只需要将文件引用为@"fileName" )。 文档可以在这里find 。

  • fileName.png – > iPhone(非视网膜/后备)
  • fileName@2x.png – > iPhone 4s / 4(视网膜)
  • fileName〜ipad.png – > iPad(非视网膜)
  • fileName@2x~ipad.png – > iPad(视网膜)

注:〜iphone也存在,可以使用/而不是使用〜ipad。 同时使用〜ipad和〜iphone将防止苹果可能引入的第三个习惯用语。 咳嗽电视咳嗽

至于iPhone 5,操作系统不强制命名scheme。 但是,使用与发射图像相同的scheme可能是明智的。

为了在整个应用程序中轻松处理这个问题,您可以创build一个类别,并在您知道自己具有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 

看起来你是遵循cocos2d的命名约定而不是标准的UIKit版本。 他们是不同的,如果你使用cocos2d你build议使用cocos2d后缀而不是UIKit的后缀。

他们如下:

  • 非视网膜iPhone(无后缀)
  • Retina iPhone -hd
  • 非视网膜iPad的-ipad
  • 视网膜iPad的 – -ipadhd
  • iPhone 5 -iphone5-iphone5hd

您想要根据与cocos2d方法一起使用的设备加载的所有文件都可以像这样添加后缀。

好的,现在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")]; 

为了让编译器自动select正确的图像,您需要命名标准(非视网膜)图像image.png和视网膜图像image@2x.png。 然后在你的代码中引用标准的。 编译器将完成剩下的工作。 所以,如果你正在设置一个图像应该是这样的:

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

iPhone 5没有特定的命名约定,因为该应用程序不会自动为iPhone 5select不同的图像大小,所以您必须在代码中使用类似下面的代码:

 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]; }