2013-02-13 4 views
7

저는 iOS 개발에 비교적 새로운 도구입니다.iOS 이미지 이름 지정 규칙

저는 현재 iPad Retina, iPad, iPhone 5 및 iPhone 4/4에서 사용할 수있는 cocos2d 라이브러리를 사용하여 앱을 제작하고 있습니다.

모든 이미지 설정이 완료되어 이름 지정 규칙을 알아 내려고합니다.

누군가 나를 도와 줄 수있는 가이드를 알고 있습니까?

나는 background.png가 있다고합니다. 에서

는 이해가 무엇을 :

  • background.png -> 아이폰 (비 망막/대체)
  • 배경-hd.png -> 아이폰 4S/4 (망막)
  • 배경 -을 ipad.png -> 아이 패드 (비 망막)
  • 배경 - ipadhd.png은 -> 아이 패드 (망막)

그리고 같은 이름 지정 규칙은 다른 모든 파일에 사용된다? 예를 들면 :

  • arbitraryButton.png -> 아이폰 (비 망막/대체)
  • arbitraryButton-hd.png -> 아이폰 4S/4 (망막)
  • arbitraryButton-ipad.png -> 아이 패드 (비 망막)
  • arbitraryButton-ipadhd.png -> 아이 패드 (망막)

내가 아이폰 5 파일의 이름을합니까?

나는 약간의 수색을했는데 이것에 대한 실체가있는 가이드를 찾지 못하는 것 같습니다.

감사합니다.

답변

9

OS는 사용자가 사용할 수있는 명명 규칙을 가지고 (당신은 @"fileName"의 파일을 참조해야 의미, 당신을 위해 시행). 설명서 is available here.

  • fileName.png -> 아이폰 (비 망막/대체)
  • [email protected] -> 아이폰 4S/4 (망막)
  • fileName에 ~ ipad.png -> 아이 패드 (비 망막)
  • fileName @ 2x ~ ipad.png -> iPad (망막)

참고 : ~ iphone도 있습니다. ~ ipad와 ~ iphone을 모두 사용하면 Apple이 소개 할 수있는 세 번째 관용구를 보호 할 수 있습니다. 기침 TV 기침 아이폰 5로

, OS가 명명 방식을 적용하지 않습니다. 그러나 출시 이미지와 동일한 구성표를 사용하는 것이 현명 할 것입니다.

이 응용 프로그램을 통해 쉽게 처리하기 위해 아이폰, 당신은 범주를 만들고, 당신이 아이폰이있을 것이다 5 친화적 알고 어디에 사용할 수 있습니다 이미지뿐만 아니라 일반 크기의 이미지. 아래처럼 간단한 버전을 만들 수 있습니다. 당신이하지적인 Cocos2D 명명 규칙 표준 UIKit 버전 이후처럼

있는 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 
+0

컴파일러는 자동으로 아이폰 5 이미지를 선택하지 않으며, 그 표준 규칙입니다 :

-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 버전이 오래된 경우

후 사용합니다. 그러나 앱 내의 다른 전체 화면 이미지의 경우 화면 크기를 확인하고 직접 설정해야합니다. – JeffN

+0

그래, 그냥 내 자신을 테스트했습니다. 이를 처리 할 수있는 편리한 방법에 대한 답변을 추가합니다. – WDUK

+0

아래에서도 내 대답을 확인할 수 있습니다. 그것은 작동하는 이것을 처리하는 방법을 가지고 있습니다 – JeffN

0

컴파일러가 올바른 이미지를 자동으로 선택하려면 표준 (비 망막) 이미지 image.png와 망막 이미지 [email protected]의 이름을 지정해야합니다. 그런 다음 표준 코드를 참조하십시오. 컴파일러가 나머지 작업을 수행합니다. 이미지를 설정하는 경우에 따라서는 다음과 같아야합니다

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

아이폰 5에 대한 특정 이름 지정 규칙을이 밤은 앱이 자동으로 아이폰 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]; 
} 
3

는 것 같습니다. 그들은 다르며 cocos2d를 사용하는 경우 UIKit 접미어가 아닌 cocos2d 접미어를 사용하는 것이 좋습니다.

다음과 같이 그들은 :

  • 비 망막 아이폰 (접미사)
  • 망막 아이폰 -hd
  • 비 망막 아이 패드 -ipad
  • 레티 나 아이 패드 -ipadhd
  • 아이폰 5 -iphone5-iphone5hd

cocos2d 메소드와 함께 사용되는 장치를 기반으로로드하려는 모든 파일은 다음과 같이 접미사를 붙일 수 있습니다.

2

좋아, 이제 cocos2d 자체 iphone5를 지원합니다. 로딩 이미지는 것,

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

    return data; 
} 
//usage 
CCSprite *bg = [CCSprite spriteWithFile:i5res(@"bg.png")];