2013-02-13 26 views
7

iOS geliştirmede göreceli olarak yeniyim.iOS Resim İsimlendirme Kuralları

Şu anda iPad Retina, iPad, iPhone 5 ve iPhone 4s/4 için kullanılabilen cocos2d kütüphanesini kullanarak bir uygulama yapıyorum.

Tüm görüntü ayarlarımı alıyorum ve adlandırma kurallarını anlamaya çalışıyorum.

Bana yardımcı olabilecek bir rehberden haberi olan var mı?

Bir background.png var diyelim. Gönderen

Anladığım kadarıyla:

  • background.png -> iPhone (non-retina/yedek)
  • background-hd.png -> iPhone 4s/4 (retina)
  • Geçmiş- ipad.png -> iPad (non-retina)
  • background-ipadhd.png -> iPad (retina)

Ve aynı adlandırma kuralı tüm diğer dosyalar için kullanılacak? Örneğin:

  • arbitraryButton.png -> iPhone (non-retina/yedek)
  • arbitraryButton-hd.png -> 4s iPhone/4 (retina)
  • arbitraryButton-ipad.png -> iPad (non-retina)
  • arbitraryButton-ipadhd.png -> iPad (retina)

ne iPhone 5 dosya adını edersiniz?

Biraz arandım ve bu konuda herhangi bir somut kılavuz bulmak mümkün görünmüyor.

Teşekkür ederiz!

cevap

9

OS kullanabileceğiniz bir adlandırma kuralı vardır (ve sadece @"fileName" olarak dosyayı referans gerekir, yani sizin için zorlar). Belge is available here.

  • fileName.png -> IPhone (non-retina/yedek)
  • [email protected] -> 4s iPhone/4 (retina)
  • fileName ~ ipad.png -> iPad (non- retina)
  • fileName @ 2x ~ ipad.png -> iPad (retina)

Not: ~ iphone da mevcuttur ve/ipad yerine/ile kullanılabilir. Her ikisi de ~ ipad ve ~ iphone kullanarak Apple üçüncü bir deyim karşı koruma sağlayabilir. öksürük TV öksürük iPhone 5 için olduğu gibi

OS bir adlandırma düzeni zorlamaz. Ancak, lansman görüntüsü için aynı şemanın kullanılması akıllıca olacaktır.

Uygulamanın tamamında kolayca işlemek için iPhone, kategori oluşturmak ve size bir iPhone olacak 5 dostu biliyorum nerede kullanabilirsiniz görüntü, normal büyüklükte bir görüntü. Aşağıdaki gibi basit bir sürüm yapılabilir. Eğer değil Cocos2d adlandırma kuralları standart UIKit versiyonları sonra olduğu gibi

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

derleyici otomatik iPhone 5 görüntüleri seçmek olmayacak ve bu standart sözleşme olduğunu:

-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 

sizin Cocos2d sürümü eskiyse

sonra kullanın. Ancak uygulamadaki diğer tam ekran görüntüleri için ekran boyutunu kontrol etmeniz ve kendiniz ayarlamanız gerekir. – JeffN

+0

Yup, sadece kendim test ettim. Bunu işlemek için uygun bir yolu yanıtlayacaktır. – WDUK

+0

Cevabımı da aşağıda kontrol edebilirim. Bunu işlemek için bir yolu vardır – JeffN

0

Derleyicinin doğru görüntüyü otomatik olarak seçmesi için standart (retina olmayan) imajlar image.png ve retina görüntüleri [email protected] Daha sonra kodunuzda standart olanı belirtin. Derleyici dinlenme yapacak. Bir görüntüyü ayarlarken Yani bu gibi görünmelidir:

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

iPhone 5 için özel bir adlandırma kuralı Orada isnt, uygulama otomatik iPhone 5 için farklı bir resim boyutu seçmek olmaz çünkü, olacak böyle bir şey kodunuzdaki yapmak zorunda:

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

görünüyor. Bunlar farklıdır ve cocos2d kullanıyorsanız, UIKit olanları değil, cocos2d soneklerini kullanmanız önerilir.

Bunlar şunlardır:

  • Olmayan retina iPhone (Hayır eki)
  • Retina iPhone -hd
  • Sigara retina iPad -ipad
  • Retina iPad -ipadhd
  • iPhone 5 -iphone5 ve -iphone5hd

Cocos2d yöntemleriyle kullanılan aygıta bağlı olarak yüklemek istediğiniz tüm dosyalar buna benzer şekilde eklenebilir.

2

Tamam, Şimdi cocos2d kendisi iphone5'i destekliyor. Yükleme görüntü için bu olacak,

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

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