在resolution.ini增加isiPhoneX配置
[resolution]
width=1138
height=640
frameFactor = 1
isiPhoneX = 1
在AppDelegate中读取配置并设置安全区域
int width = 960;
int height = 640;
float frameFactor = 1.f;
bool isiPhoneX = false;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
wchar_t lpPath[MAX_PATH];
wchar_t widthStr[6] = { 0 };
wchar_t heightStr[6] = { 0 };
wchar_t frameFactorStr[6] = { 0 };
wchar_t isiphoneXStr[6] = { 0 };
wcscpy(lpPath, L"./resolution.ini");
GetPrivateProfileString(L"resolution", L"width", L"", widthStr, 6, lpPath);
GetPrivateProfileString(L"resolution", L"height", L"", heightStr, 6, lpPath);
GetPrivateProfileString(L"resolution", L"frameFactor", L"", frameFactorStr, 6, lpPath);
GetPrivateProfileString(L"resolution", L"isiPhoneX", L"", isiphoneXStr, 6, lpPath);
width = _wtoi(widthStr);
height = _wtoi(heightStr);
frameFactor = _wtof(frameFactorStr);
isiPhoneX = bool(_wtoi(isiphoneXStr));
if (isiPhoneX) {
width = 2436.0;
height = 1125.0;
frameFactor = 0.56888889;
PlatformSetting::sharedInstance()->setViewSafeAreaInsets(0, 132, 63, 132);
}
CCLOG("width = %d, height = %d, frameFactor = %f", width, height, frameFactor);
#endif
///end
Rect rect(0, 0, width, height);
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
glview = GLViewImpl::createWithRect("ONE PIECE 2", rect, 1.0);
#else
glview = GLViewImpl::createWithRect("ONE PIECE 2", rect, frameFactor, true);
#endif
director->setOpenGLView(glview);
}
Size frameSize = glview->getFrameSize();
Size designSize(1136, 640);
if (frameSize.width / frameSize.height < 1136.f / 640) {
glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::FIXED_WIDTH);
} else {
glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::FIXED_HEIGHT);
}