久々のQiita投稿です。最近はもっぱらブログに投稿していたので、おざなりになってました。ブログもおヒマなら覗いてみて下さい。
くま's Tech系Blog
最近はiOS13対応をしているので、まとめてメモしたいと思います。
①モーダル表示の変更
最初に一番驚いたのがこれです。
かなり中途半端になっていて、下の画面が少しみえます。
しかも、前面に出ている画面を下げると下の画面が表示されます。これだと、遷移時に更新とかするのに大変です。
Appleはこういうモーダル構成に今後していきたいということですかね?
これに関しては、UIModalPresentationStyleにautoが追加され、デフォルトのモードがautoとなっていることで発生しています。(今まではfullScreenがデフォルトでした)
なので、fullScreenにすれば問題ないはずです。
viewController.modalPresentationStyle = .fullScreen
もしくは、stroryboardで設定している場合は変更すればいいはずです。
②Segemetの変更
iOS13ではUISegmentedControlの見た目が変更されます。
今まではtintColorを使っていましたが、tintColorに依存しなくなったので、色を設定していてもデフォルトに戻ります。
これは、selectedSegmentTintColorを使うことで変更できます。
文字の色を変更する場合は下記のようにしないといけません。
// 選択されている場合の文字の色
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .selected)
// 選択されていない場合
setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: .normal)
また、選択されていない場合の背景色がグレーになっているかと思いますが、これは背景が単色のimageを設定すれば解消されます。(文字の色と合わない場合があるので)
// 背景に単色画像を設定
setBackgroundImage(UIColor.clear.toImage(), for: .normal, barMetrics: .default)
setBackgroundImage(UIColor.red.toImage(), for: .selected, barMetrics: .default)
この場合はtintColorを設定していても .normalと.selected両方の設定がないと反映されません。(むしろtintColorはいらない気がします)
③FontのBoldが変更
iOS13でBoldが以前より少し太くなっています。
これによって、ラベルがはみ出したり、全て表示されないといことがあるので、幅を広げたりする必要性がありそうです。(太字を直せるか微妙なところだし、そもそも新しい太字で進めるべきな気がしてきた...)
今のところこんな感じですが、まだまだあります。(ダークモードとか)
そこまで大幅な修正はあまりなさそうですが、2020年4月までにXcode11で開発しないといけないため、そろそろ開発し始めないといけなさそうですね。
参照
iOS13対応をまとめてみた
iOS 13における必須対応について
iOS13でUISegmentedControlの見た目をカスタマイズする
ios13から日本語フォントのboldがより太くなるケース