Соглашения об именах изображений iOS

Я относительно новичок в разработке iOS.

В настоящее время я создаю приложение, используя библиотеку cocos2d, которая будет доступна для iPad Retina, iPad, iPhone 5 и iPhone 4s / 4.

Я получаю все мои настройки изображений, и я пытаюсь понять соглашения об именах.

Кто-нибудь знает о проводнике, который может мне помочь?

Скажем, у меня есть background.png.

Из того, что я понимаю:

  • background.png -> iPhone (без сетчатки / резервное копирование)
  • background-hd.png -> iPhone 4s / 4 (сетчатка)
  • background-ipad.png -> iPad (без сетчатки)
  • background-ipadhd.png -> iPad (сетчатка)

И такое же соглашение об именах будет использоваться для всех других файлов? Например:

  • произвольныйButton.png -> iPhone (без сетчатки / резервный)
  • anyButton-hd.png -> iPhone 4s / 4 (сетчатка)
  • anyButton-ipad.png -> iPad (без сетчатки)
  • anyButton-ipadhd.png -> iPad (сетчатка)

Что я могу назвать файлами iPhone 5?

Я искал немного и, похоже, не нашел там каких-либо осязаемых путеводителей.

Спасибо!

4 Solutions collect form web for “Соглашения об именах изображений iOS”

У OS есть соглашение об именах, которое вы можете использовать (и принудительно для вас, что означает, что вам нужно всего лишь ссылаться на файл как @"fileName" ). Документация доступна здесь .

  • fileName.png -> iPhone (без сетчатки / резервное копирование)
  • fileName@2x.png -> iPhone 4s / 4 (сетчатка)
  • fileName ~ ipad.png -> iPad (без сетчатки)
  • fileName@2x~ipad.png -> iPad (сетчатка)

Примечание: ~ iphone также существует и может использоваться с / вместо использования ~ ipad. Использование как ipad, так и iphone обеспечит защиту от третьего идиома, который может представить Apple. кашель ТВ кашель

Что касается 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 

Похоже, что вы после конвенций об именах cocos2d не являются стандартными версиями UIKit. Они разные, и если вы используете cocos2d, вам рекомендуется использовать суффиксы cocos2d, а не UIKit.

Они заключаются в следующем:

  • IPhone (без суффикса)
  • Retina iPhone -hd
  • Не сетчатка iPad -ipad
  • Retina 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")]; 

Чтобы компилятор автоматически выбирал правильное изображение, вам нужно будет назвать стандартные изображения (изображения без сетчатки) image.png и изображения сетчатки image@2x.png. Тогда в вашем коде просто обратитесь к стандартному. Компилятор сделает все остальное. Поэтому, если вы устанавливаете изображение, оно должно выглядеть так:

 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]; } 
  • Как отключить собственное разрешение iPhone 6?
  • Как масштабировать физику?
  • Несколько просмотров OpenGL (Cocos2D)
  • как получить расстояние от объекта с iPhone-камеры, используя изображение Exif meta data?
  • Является ли Cocos2d-xa хорошей платформой для разработки игр?
  • У моего GKMatch нет игроков ...?
  • Admob bannerView Request Error: нет рекламы для показа
  • эффект туннеля cocos2d
  • Разделение представления на 4 треугольные области и обнаружение касаний (iOS и Cocos2d)
  • Игра ios делает эффект слоя маски
  • Как сравнить лучший распознаватель речи для iPhone?
  • Как преобразовать CCSprite в черно-белый / серый с помощью setBlendFunc
  • Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.