2013-02-13 21 views
7

मैं आईओएस विकास में अपेक्षाकृत नया हूं।आईओएस छवि नामकरण सम्मेलन

मैं वर्तमान में कोकोस 2 डी लाइब्रेरी का उपयोग करके एक ऐप बना रहा हूं जो आईपैड रेटिना, आईपैड, आईफोन 5, और आईफोन 4 एस/4 के लिए उपलब्ध होगा।

मैं अपनी छवियों सेटअप के सभी हो रही है, और मैं नामकरण सम्मेलनों यह पता लगाने की कोशिश कर रहा हूँ।

किसी को भी वहाँ बाहर एक गाइड पता है कि मेरी मदद कर सकता है?

मैं एक background.png है कहो।

से मैं क्या समझ:

  • background.png -> iPhone (गैर-रेटिना/फ़ॉलबैक)
  • पृष्ठभूमि hd.png -> iPhone 4s/4 (रेटिना)
  • पृष्ठभूमि ipad.png -> iPad (गैर-रेटिना)
  • पृष्ठभूमि ipadhd.png -> iPad (रेटिना)

और एक ही नामकरण परंपरा अन्य सभी फ़ाइलों के लिए इस्तेमाल किया जाएगा? उदाहरण के लिए:

  • arbitraryButton.png -> iPhone (गैर-रेटिना/फ़ॉलबैक)
  • arbitraryButton-hd.png -> iPhone 4s/4 (रेटिना)
  • arbitraryButton-ipad.png -> iPad (गैर-रेटिना)
  • arbitraryButton-ipadhd.png -> iPad (रेटिना)

क्या मैं iPhone 5 फ़ाइलों का नाम करते हैं?

मैं थोड़ा खोज की है और नहीं कर सकते वहाँ इस पर कोई ठोस गाइड को खोजने के लिए लग रहे हैं।

धन्यवाद!

उत्तर

9

ओएस एक नामकरण परंपरा है कि आप उपयोग कर सकते हैं (और आप के लिए लागू करता है, जिसका अर्थ है कि आप केवल @"fileName" के रूप में फ़ाइल को संदर्भित करने की जरूरत है)। प्रलेखन is available here

  • fileName.png -> iPhone (गैर-रेटिना/फ़ॉलबैक)
  • [email protected] -> iPhone 4s/4 (रेटिना)
  • fileName ~ ipad.png -> iPad (गैर रेटिना)
  • फ़ाइल नाम @ 2x ~ आईपैड।पीएनजी -> आईपैड (रेटिना)

नोट: ~ आईफोन भी मौजूद है, और ~ ipad का उपयोग करने के बजाय/इसका उपयोग किया जा सकता है। ~ आईपैड और ~ आईफोन दोनों का उपयोग करने से तीसरे मुहावरे के खिलाफ सुरक्षा होगी ऐप्पल पेश कर सकता है। खांसी टीवी खांसी

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

संकलक स्वचालित रूप से iPhone 5 छवियों का चयन नहीं होगा, यह चित्र लोड करने के लिए, और कहा कि मानक सम्मेलन है। लेकिन ऐप के भीतर अन्य पूर्ण स्क्रीन छवियों के लिए, आपको स्क्रीन आकार की जांच करनी होगी और इसे स्वयं सेट करना होगा। – JeffN

+0

यूप, बस खुद का परीक्षण किया। इसे संभालने के लिए एक सुविधाजनक तरीका जवाब देने के लिए जोड़ देंगे। – WDUK

+0

नीचे मेरा उत्तर भी देख सकता है। इसका प्रबंधन करने का एक तरीका है जो – JeffN

0

संकलक के लिए सही छवि को स्वचालित रूप से चुनने के लिए आप मानक (गैर-रेटिना) छवियों image.png और रेटिना छवियों [email protected] नाम देना चाहेंगे। फिर अपने कोड में केवल मानक एक को देखें। कंपाइलर बाकी कर देगा। तो अगर आप एक छवि सेट कर रहे हैं यह इस तरह दिखना चाहिए:

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

iPhone 5 के लिए एक विशिष्ट नामकरण परंपरा वहाँ नहीं है, क्योंकि एप्लिकेशन स्वचालित रूप से iPhone 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 का उपयोग कर रहे हैं तो आपको cocos2d प्रत्यय का उपयोग करने की सलाह दी जाती है, न कि UIKit वाले।

वे इस प्रकार हैं:

  • गैर रेटिना iPhone (कोई प्रत्यय)
  • रेटिना iPhone -hd
  • गैर रेटिना आईपैड -ipad
  • रेटिना आईपैड -ipadhd
  • iPhone 5 -iphone5 और -iphone5hd

सभी फ़ाइलों को जिन्हें आप लोड करना चाहते हैं उस डिवाइस के आधार पर जो cocos2d विधियों के साथ उपयोग किया जाता है, इस तरह से भरा जा सकता है।

2

ठीक है, अब 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")]; 
संबंधित मुद्दे