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可能是明智的。
- fileName-568h@2x.png – > iPhone 5
为了在整个应用程序中轻松处理这个问题,您可以创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]; }