我是 iOS 开发的新手。
我目前正在使用可用于 iPad Retina、iPad、iPhone 5 和 iPhone 4s/4 的 cocos2d 库构建应用。
我正在设置我所有的图像,我正在尝试找出命名约定。
有谁知道可以帮助我的指南吗?
假设我有一个 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 文件?
我进行了一些搜索,但似乎找不到任何具体的指南。
谢谢!
最佳答案
操作系统有一个您可以使用的命名约定(并为您强制执行,这意味着您只需要将文件引用为 @"fileName"
)。文档 is available here .
- fileName.png -> iPhone(非视网膜/后备)
- fileName@2x.png -> iPhone 4s/4(视网膜)
- fileName~ipad.png -> iPad(非视网膜)
- fileName@2x~ipad.png -> iPad(视网膜)
注意:~iphone 也存在,并且可以与 ~ipad 一起使用或代替使用 ~ipad。同时使用 ~ipad 和 ~iphone 可以防止 Apple 可能引入的第三种习语。 咳嗽 电视咳嗽
至于 iPhone 5,操作系统不强制执行命名方案。但是,使用与启动图像相同的方案可能是明智的。
- fileName-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
关于iOS 图像命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859763/