1. 程式人生 > >如何使用iPhoneXR/XSMAX模擬器進行螢幕適配

如何使用iPhoneXR/XSMAX模擬器進行螢幕適配

Xcode版本:Version 10.0 (10A254a)

新的Xcode執行工程發現會報錯:ld: library not found for -lstdc++ 。 這是因為蘋果去掉了lstdc++.6.0.9.tbd動態庫。

雖然有臨時的解決方案:把xcode9裡的這個動態庫人為複製到xcode10裡,但是對於模擬器執行還是報錯 

我的解決辦法:

1.將Other Linker Flags 中的-lstdc++刪掉

2.將C++ Standard Library 的值由libstdc++改為libc++

這時執行會有大量C++的報錯

3.找到圖中圈起來的報錯的庫  移出工程

再執行報的的我們自己寫的程式碼引用那些庫的錯

4找到報錯的程式碼 用條件編譯

#if RUN_IN_XCODE10_WITHOUT_CPLUS_IN_SIMULATOR//1
#else

        [[HCIAsrRecorderManager sharedRecorder] startRecorder:asrInitConfig andConfig:asrRecogConfig];
        
#endif

然後就可以正常運行了

5.進行 機型判斷與適配 

iPhoneXS 和 iPhoneX 螢幕大小一樣不需要改動

iPhoneXR 和 iPhoneXSMax 雖然螢幕尺寸不一樣 但是程式碼裡面都是 414 * 896

在原來的iPhoneX適配基礎上加上一句就可以 

原來的
#define IsIphoneX ((((SCREEN_WIDTH == 375) && (SCREEN_HEIGHT_DEVICE_NEW == 812)  )) ? 1 : 0)

現在的
#define IsIphoneX ((((SCREEN_WIDTH == 375) && (SCREEN_HEIGHT_DEVICE_NEW == 812)  ) || \
                    ((SCREEN_WIDTH == 414) && (SCREEN_HEIGHT_DEVICE_NEW == 896)  )) ? 1 : 0)

ok 適配結束