くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

iOS13のアップデート対応してみた

最近もっぱらiOS13対応をしているので、まとめてメモしたいと思います。

①モーダル表示の変更

最初に一番驚いたのがこれです。

かなり中途半端になっていて、下の画面が少しみえます。

しかも、前面に出ている画面を下げると下の画面が表示されます。これだと、遷移時に更新とかするのに大変です。

Appleはこういうモーダル構成に今後していきたいということですかね?

f:id:kumaskun:20200113141248p:plain

これに関しては、UIModalPresentationStyleにautoが追加され、デフォルトのモードがautoとなっていることで発生しています。(今まではfullScreenがデフォルトでした)

なので、fullScreenにすれば問題ないはずです。

viewController.modalPresentationStyle = .fullScreen

もしくは、stroryboardで設定している場合は変更すればいいはずです。

f:id:kumaskun:20200113142003p:plain

②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が以前より少し太くなっています。

これによって、ラベルがはみ出したり、全て表示されないといことがあるので、幅を広げたりする必要性がありそうです。(太字を直せるか微妙なところだし、そもそも新しい太字で進めるべきな気がしてきた...)

④ハイライトの条件変更

UITableViewCell選択時にcontentView及びそのサブビューのbackgroundColorまたはisOpaqueプロパティが変更されなくなり、contentView 及びそのサブビューに不透明な backgroundColor を設定している場合には影響を受けてハイライト表示されなくなります。

ハイライトさせたいビューの backgroundColornilまたはclearに設定すれば解決します。

解決しない場合には追加でisOpaquefalseにすればいけるはず!

⑤UISearchBarの機能追加

UISearchBarのUISearchTextFieldクラスが追加され、検索エリアの背景色が指定できます。

var searchBar = UISearchBar()
searchBar.searchTextField.backgroundColor = .systemOrange
searchBar.searchTextField.textColor = .systemPurple

ついでに、色に.system○○○○も追加されました。

Light / Dark でいい感じにに変わるみたいです。

今のところこんな感じですが、まだまだあります。(ダークモードとか)

そこまで大幅な修正はあまりなさそうですが、2020年4月までにXcode11で開発しないといけないため、そろそろ開発し始めないといけなさそうですね。

参照

iOS13対応をまとめてみた

iOS 13における必須対応について

iOS13でUISegmentedControlの見た目をカスタマイズする

ios13から日本語フォントのboldがより太くなるケース

iOS13 で UITableViewCell をタップしても背景色がハイライトしなくなった

【iOS】iOS13のUISearchBarの新機能を試してみる