見出し画像

[Swift]iOS14でenabledSemanticSegmentationMatteTypesを設定すると挙動がおかしくなる問題の解決法

そろそろiOS14にメジャーアプデしてみたら、作成中のカメラアプリでカメラプレビューもAVCapturePhoto取れなくなってハマりました。

photoOutput.enabledSemanticSegmentationMatteTypes = photoOutput.availableSemanticSegmentationMatteTypes

どうもこの一文でenabledSemanticSegmentationMatteTypesが空でなくなると挙動がおかしくなるみたいです。

あれこれ試行錯誤した末にGitHubで漁った適当なコードを動かしてみたらあっさり解決。
前提としてisPortraitEffectsMatteDeliveryEnabledの設定が必要になったっぽいですね。

photoOutput.isPortraitEffectsMatteDeliveryEnabled = photoOutput.isPortraitEffectsMatteDeliverySupported
photoOutput.enabledSemanticSegmentationMatteTypes = photoOutput.availableSemanticSegmentationMatteTypes

のようにすればまた正しく動くようになりました。

AVCapturePhotoOutputってプロパティ間の整合性がおかしい時はコンソールにログを吐いてエラーになってくれるんですけどね。
なぜかここだけバリデーションがスルーされてるみたいです。

もっとGitHubを参考にする癖を身に着けないと。 ■

いいなと思ったら応援しよう!