爆速でiOS13に対応するためにやったこと

個人開発アプリでiOS13対応をしたので、やったことや躓いたことをメモしておきます。
小規模アプリなのもあり、対応自体は1時間もかからず終わりました（macOS、Xcodeのアプデ含めても2時間くらい）。
これから対応される方のお役に立てば幸いです。
[Anilog - アニメ記録はアニログ](https://itunes.apple.com/jp/app/-/id1433207679?mt=8)

# 事前準備
* Xcodeを最新にしておく（Xcode 11 GM Seed）
* macOSを最新にしておく（macOS Catalina 10.15 beta 8）

※2019/09/15時点の最新
※ダウンロードはこちらから：https://developer.apple.com/download/
※後述の通り、最新にしていなかったことが原因でハマったこともあったので、先に最新版を入れておくことをおすすめします。
※ macOSについては、Catalinaのbetaを既に入れている場合のみ。

## 追記（2019/09/17 08:00）
`Xcode 11 GM seed 2`が来ましたので、これから対応される方はそちらを利用してください。
Xcode 11 GM seedで、今回バグが発見された`named colors`を使っているアプリを提出済みの方については、`Xcode 11 GM seed 2`でビルドしたものを再提出する必要があるとのこと。
<img width="653" alt="スクリーンショット 2019-09-17 7.54.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/56418b48-b017-b780-76df-3aae70bc2cf1.png">



# やったこと、躓いたこと
## クラッシュ修正
ビルドしようとしたら下記エラーでクラッシュしました。
>Terminating app due to uncaught exception 'NSGenericException', reason: 'Access to UISearchBar's _searchField ivar is prohibited. This is an application bug'

下記のように`value(forKey:)`を使っている箇所があったのですが、このアクセス方法が禁止になったようです。

```swift
let textField = searchBar.value(forKey: "_searchField") as! UITextField
textField.backgroundColor = .gray
```

下記記事を参考に**`searchTextField`プロパティを使うように変更した**ところ、ビルドが通るようになりました。
[UISearchBarのプライベートなプロパティにアクセスするコードがiOS 13では禁止になったようです - Qiita](https://qiita.com/ktanaka117/items/1a30c4c6052cd8e1a0b7)

## ダークモード対応
iOS13の目玉の一つでもあるダークモードですが、今すぐに対応するのは正直厳しいので、一旦ライトモード固定で逃げることにしました。
**`info.plist`で`User Interface Style`キーに`Light`を設定すれば完了**。
<img width="367" alt="スクリーンショット 2019-09-15 23.26.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/083d7c23-ee82-d0b8-88e1-59d4901cb0a7.png">

ダークモード設定中でも本当にライトモードになっているのか、念のためシミュレーターで確認したい場合は、下記記事を参考に「設定アプリ」から`Dark Appearance`をONにしてください。
[XCode11のシミュレーターでiOS13のダークモードを設定する方法 - Qiita](https://qiita.com/p_on_ro/items/91e6659fda662fb2aac0)

ちなみに、`info.plist`で誤って`light`（正しくは`Light`）を設定したままストアにアップロードしようとしてしまったのですが、下記エラーが出てできませんでした。皆さんはお間違いなく！
<img width="713" alt="スクリーンショット 2019-09-15 22.52.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/a1b3b205-b54b-a6a7-eec7-741838bdf2c9.png">

## モーダル表示の変更
`UIViewController`の`modalPresentationStyle`のデフォルト値が`FullScreen`から`Automatic`に変更されたことで、アプリ内のモーダル表示のスタイルが一部変わってしまっていました。

iOS12まで |iOS13
---- | ----
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/99934013-6060-1c98-5db1-e2a78b7201bc.png" width="320"/> | <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/45bfb6f5-5125-998e-a790-ffef57340e69.png" width="320"/>

今回はiOS12までのスタイルに戻す形で修正をしたかったため、
**Storyboardから該当のSegueを選択し、AttributesInspectorで`Presentation`を`Full Screen`に変更しました**。
<img width="253" alt="スクリーンショット 2019-09-15 16.24.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/35f2c68c-6312-7ace-527b-2a5992e7aac3.png">
参考：[iOS 13時代のModal表示仕様と対応 - Qiita](https://qiita.com/yh_genephia/items/b82d4df36b4ef1fdcdd8)

## タブバーの色がおかしい
本来は選択中のタブのみアイコンの色が付くはずなのですが、なぜか両方色がついていました。
<img width="429" alt="スクリーンショット 2019-09-15 15.58.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/396fa957-ceda-28c1-dfef-28cff0297298.png">

もともと入れていた**Xcode11 betaのバグ**らしく、**Xcode 11 GM Seedを入れたら直りました**。
[uitabbarcontroller - UITabBarItem icon not colored correctly for iOS 13 when a bar tint color is specified in Interface Builder in Xcode 11, beta 2 - Stack Overflow](https://stackoverflow.com/questions/56839374/uitabbaritem-icon-not-colored-correctly-for-ios-13-when-a-bar-tint-color-is-spec)

## Xcode 11 GM Seedでビルドできない
>Distill failed for unknown reasons.
<img width="242" alt="スクリーンショット 2019-09-15 17.13.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/53112717-a60c-bc27-767c-25df4215c66e.png">

というエラーが出てビルドが通らず。

下記記事にコメントがあるように、**macOSを最新にしたらビルドが通りました。**
[Distill failed for unknown reasons (Xcode 11 be… |Apple Developer Forums](https://forums.developer.apple.com/thread/120742)
<img width="946" alt="スクリーンショット 2019-09-15 17.21.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/abe057c7-365c-8b03-c0e0-aff5ceb8657c.png">

# 追記（2019/09/18 01:00）
本記事の内容で審査をクリアし、無事リリースしました！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/112818/09996881-74b2-d5e3-e96b-5a430d1bb17e.jpeg" width="500"/>