Соглашения об именах изображений 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]; } 
  • CCNode как дочерний элемент CCScene Touch Handler cocos2d v3
  • Игровой центр Песочница: проблема «Не удалось создать игру»
  • cocos2d Ошибка OpenGL 0x0502 в -
  • развертывание iOS только на определенных устройствах
  • OpenAL беспорядочно останавливает воспроизведение некоторых звуков, может только исправить при перезагрузке
  • Добавить UIImage в CCSprite?
  • Плановые методы cocos2d запускаются в другом потоке?
  • Как плавно перемещать кнопку в cocos2d Xcode
  • Музыка CocosDenshion исчезает
  • CCLayer с круглыми углами
  • Выполнение раскадровки из CCLayer
  • Interesting Posts

    SpriteKit: как плавно анимировать SKCameraNode при отслеживании узла, но только после того, как узел перемещает Y пикселей?

    iPhone – GestureRecognizer иногда не срабатывает?

    iOS 7 UINavigationController Несбалансированные вызовы для перехода к началу / концу отображения для

    могу ли я заставить пользователя обновлять мое приложение с помощью hockeyapp?

    shadowedBitMask vs. shadowCastBitMask

    iOS – проверьте, существует ли файл Dropbox Sync API iOS SDK

    Проблема с iOS 7 UISearchDisplayController

    Обновление Instagram до 5.0. Как я могу установить «InstagramCaption» программно с помощью iPhone-крючков

    HTML5 Safari iOS доступ только для камеры, а не для библиотеки фотографий

    Защита резьбы для геттера и сеттера в одноточечном

    будет активировать уведомление по-прежнему после передачи права собственности в iTunesConnect

    iOS: Как определить некоторые объекты по умолчанию, которые будут использоваться где угодно?

    Как прокручивать изображения влево и вправо, когда оно отображается на большом изображении

    Как настроить кнопку «Больше» UITabBarController?

    клавиатура textview не уходит в отставку, когда я нажимаю iOS

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.