LoginSignup
28
17

More than 5 years have passed since last update.

iOS11のバグ修正を行うに当たって気になったレイアウト関連の変更点(contentInsetAdjustmentBehavior, SafeAreaLayoutGuide)

Last updated at Posted at 2017-09-09

以下はβ段階での情報を元にした内容となります。
そのため、GM版では変更となる可能性があります。

はじめに

iOS11の対応を行うにあたり、レイアウト周りでいくつかのバグを修正しました。
既出のものもあるかもしれませんが、個人的な備忘録も兼ねてまとめます。

検証環境

以下の環境を使用しています。

  • macOS Sierra Version 10.12.6
  • Xcode Version 9.0.0 β6
  • iOS11.0β10

ContentInsetAdjustmentBehaviorについて

UIScrollViewに関してiOS11で新たに導入されたプロパティです。
contentInsetsを自動調整するかどうかを決めるものですが、デフォルトでautomaticになっています。そのため、contentInsetsを手動で設定している場合などにこのことを考慮していないと予期せぬ不具合が発生する可能性があります。
私の確認した範囲では、self.navigationController?.pushViewController(notifVC, animated: true)を実行した際に遷移のアニメーションが斜め上方向になるという事象が発生しました。事象の実際のイメージにつきましては以下の資料をご参照ください。

対応方法

従来のレイアウトを踏襲するか、iOS11のContentInsetAdjustmentBehaviorに従来のロジックを合わせるかどちらかによりますが、従来のレイアウトをそのまま踏襲する場合は以下となります。

if #available(iOS 11.0, *) {
    scrollView.contentInsetAdjustmentBehavior = .never
}

StoryBoardでのsafeArea設定について

StoryBoard上でautoLayout設定する際に、TopLayoutGuide, BottomLayoutGuideを使用することがあるかと思いますが、こちらがiOS11でdeprecatedになるようです。
Apple Document - TopLayoutGuide

代わりに使用を推奨されているのがSafeAreaLayoutGuideです。
Apple Document - SafeAreaLayoutGuide

topLayoutGuide, bottomLayoutGuideがdeprecatedになったことにともない、iOS11で該当のconstraintsを使用している場合に意図しない挙動になる可能性があります。
確認した範囲では、画面遷移時にtableViewが上方に一度ずれ、その後戻るという挙動が端末依存で発生しました。(iPhone5でのみ発生)

対応方法

StoryBoard上に設定を行うチェック項目がありますので、こちらにチェックをつけるのみです。
スクリーンショット 2017-09-09 21.16.22.png

終わりに

この情報がどなたかのお役に立てられたら幸いです。

28
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
17