- Если cocos2d версии 1.0 - 2.1, то обновите его до Cocos2d 2.2
- Добавьте заставку iPhoneX в Images.xcassets
В файле CCConfiguration.m обновлена функция ниже.В этом мы обрабатываем contentScaleFactor 3.
-(NSInteger) runningDevice
{
NSInteger ret=-1;
#ifdef __CC_PLATFORM_IOS
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
ret = (CC_CONTENT_SCALE_FACTOR() == 2) ? kCCDeviceiPadRetinaDisplay : kCCDeviceiPad;
}
else if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone )
{
// From http://stackoverflow.com/a/12535566
BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if( CC_CONTENT_SCALE_FACTOR() == 2 ) {
ret = isiPhone5 ? kCCDeviceiPhone5RetinaDisplay : kCCDeviceiPhoneRetinaDisplay;
// Guru - Handle iPhone Plus device, iPhoneX
// - - - - - - - -- -- - - - -- - - - - -
if([[UIScreen mainScreen] scale]==3)
{
ret = kCCDeviceiPhone5RetinaDisplay;
}
}
else
{
// Guru - Handle iPhone Plus device, iPhoneX
// - - - - - - - -- -- - - - -- - - - - -
if([[UIScreen mainScreen] scale]==3)
{
ret = kCCDeviceiPhone5RetinaDisplay;
}
else
// - - - - - - - -- -- - - - -- - - - - -
ret = isiPhone5 ? kCCDeviceiPhone5 : kCCDeviceiPhone;
}
}
#elif defined(__CC_PLATFORM_MAC)
// XXX: Add here support for Mac Retina Display
ret = kCCDeviceMac;
#endif // __CC_PLATFORM_MAC
return ret;
}
Используйте кнопки и другое изображение с iPhone5HD и вручную загружайте фон для iPhone X
CCSprite *bg ;
if([App isIphoneX])
{
bg = [CCSprite spriteWithFile:@“Background-iphoneX.png"]; // 1624X750 image size
}
else
{
bg = [CCSprite spriteWithFile:@"Background.png"]; // make sure -hd,-ipad,-ipadhd, -iphone5hd there
}
ИЛИ просто масштабируйте изображение bg
#define SW ([[CCDirector sharedDirector] winSize].width)
#define SH ([[CCDirector sharedDirector] winSize].height)
CCSprite *bg ;
if([App isIphoneX])
{
bg = [CCSprite spriteWithFile:@"Background.png"];
bg.scaleX = SW/bg.contentSize.width;
bg.scaleY = SH/bg.contentSize.height;
}
Код делегата приложения:
-(bool)isIphoneX
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.width == 812) // portrait height = 812
{
return true;
}
if([self isIphoneXR]) // Now in this game iPhoneXR, iPhoneXS Max = iPhoneX,
{
return true;
}
}
return false;
}
-(bool)isIphoneXR
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.width == 896 && screenSize.height == 414)
{
return true;
}
}
return false;
}
Не добавляйте заставку iPhone6, iPhone7, iPhoneXR, iPhoneXSMax. Системное автоматическое масштабирование iphone5 для iPhone6, iPhone7 и т. Д. И iPhoneX для iPhoneXR, iPhoneXSMax.Вы должны использовать iPhone 5, iPhoneX splash
ПРИМЕЧАНИЕ: Я только что поддержал iPhoneX и поддержку всех устройств для моей старой игры ... Apple недавно одобрила это изменение ... успешно добавленоподдержка iPhoneX для cocos2d 2.2