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

以下はβ段階での情報を元にした内容となります。
そのため、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

終わりに

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


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。