今朝起きたらXcode 12.3が公開されていたので、Xcode 12.3をダウンロードして開発中のアプリが動くかどうか検証しようとしたところ、UIAlertControllerが真っ黄色になっていたので腰をぬかしました。すんげえエンバグしてもうたと慌てて原因を調査しました。
iOS 14.3 シミュレータの画面が黄色くなってしまう問題が発生
何度かデバッグ実行を繰り返したところ開発中のアプリは関係なく、そもそもとして iOS 14.3シミュレータ を実行するとドック部分が黄色くなっていることに気がつきました。黄色くなる部分はドック(?)やナビゲーションバーやタブバーの部分やアラートなどの半透明になっている部分です。
以下の環境で不具合が発生することを確認した。
- Big Sur 11.0.1(20B50)
- Xcode 12.3
- iOS 14.3 シミュレータ
ちなみに Big Surのバージョンを 11.1(20C69)
に上げても問題は発生します。macOSのバージョンは不具合の原因としては直接的には関係なく、iOS 14.3シミュレータに問題があることがわかりました。
SOにも報告あり
Stack Overflowにも同一の現象について書き込みがあるのをみつけた。
この質問者の方は以下の組み合わせで実行しているようです。
- Catalina 10.15.7
- Xcode 12.3
- iOS 14.3 シミュレータ
Twitterでも報告あり
Twitterでも同じ現象の書き込みを見つけた。こちらの方は実行しているOSバージョンについての言及はなかったけれど「外部ディスプレイを接続していたら発生した」と書かれている。
The yellow tinted UIVisualEffectView is my favorite Xcode 12.3 feature. Happens if the iOS 14.3 simulator is launched while an external display is connected. pic.twitter.com/GqRPPtRWLp
— George Cox (@the_george_cox) 2020年12月14日
うちでは外部ディスプレイを使ってないのに発生しているのだが?と思ってハマり続けていた。
解決編:MacBook Proに刺さっている充電ケーブルを抜いて iOSシミュレータを再起動する
何度かiOSシミュレータの再起動して試したところ、正しい対応策かはわからないけど解決策が判明しました。以下の方法で問題が解決することを確認しました。
- 充電ケーブルを含むすべてのケーブルを抜く
- 実行中のiOSシミュレータを再起動する
つまりは、「MacBook Proに刺さっている充電ケーブルを抜いて iOSシミュレータ を再起動する」 です。HDMIケーブル以外にも充電ケーブルも刺さっていると黄色画面現象が発生しました。しかしなんでこんなことが起こってしまうのか。
私と同じ現象に遭遇した場合には、充電ケーブルも抜いて iOS シミュレータを起動しましょう!!
解決編(その2):iOSシミュレータの GPU設定 を変更する
そもそもケーブルが刺さっているとGPU設定が変わるのが原因ではないかと指摘があり、iOSシミュレータのタブバーから File -> GPU Selection -> Prefer Integrated GPU をONにすることでも半透明が正しく表示されました。
私と同じ現象に遭遇した場合には、iOSシミュレータのGPU設定を変更してみてください!