最近もっぱら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が以前より少し太くなっています。
これによって、ラベルがはみ出したり、全て表示されないといことがあるので、幅を広げたりする必要性がありそうです。(太字を直せるか微妙なところだし、そもそも新しい太字で進めるべきな気がしてきた...)
④ハイライトの条件変更
UITableViewCell選択時にcontentView及びそのサブビューのbackgroundColor
またはisOpaque
プロパティが変更されなくなり、contentView 及びそのサブビューに不透明な backgroundColor を設定している場合には影響を受けてハイライト表示されなくなります。
ハイライトさせたいビューの backgroundColor
にnil
またはclear
に設定すれば解決します。
解決しない場合には追加でisOpaque
をfalse
にすればいけるはず!
⑤UISearchBarの機能追加
UISearchBarのUISearchTextFieldクラスが追加され、検索エリアの背景色が指定できます。
var searchBar = UISearchBar() searchBar.searchTextField.backgroundColor = .systemOrange searchBar.searchTextField.textColor = .systemPurple
ついでに、色に.system○○○○も追加されました。
Light / Dark でいい感じにに変わるみたいです。
今のところこんな感じですが、まだまだあります。(ダークモードとか)
そこまで大幅な修正はあまりなさそうですが、2020年4月までにXcode11で開発しないといけないため、そろそろ開発し始めないといけなさそうですね。
参照
iOS13でUISegmentedControlの見た目をカスタマイズする