質問: ### 前提 Swift 4.2でiOSアプリを作成しています。 StoryboardでUIViewの中にUIToolbarを置き、Auto Layoutで下部に張り付くようにしました。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9602845052331d3b2b94cfc7c306ba5a.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1ff645947aba4a99796d6737786f516c.png) ### 実現したいこと UINavigationbarの場合、setNavigationBarHiddenでスムーズに非表示・再表示を切り替えることができますが、それと同様にUIToolbarの表示を切り替えたいと思いました。 UIToolbar.isHiddenでは瞬時に表示・非表示が切り替えられてしまうので、UIView.animateメソッドでアニメーションすればよいかと思いますが、Auto Layoutを利用しているため、UIToolbarを画面外へスライドして非表示・表示を切り替えるには、コード上どのようにレイアウトの制約を変更すればよいか教えてください。 宜しくお願いします。
回答: BottomのConstraintに名前を付けてやって、隠すときはConstant値をtoolBar.frame.size.height + view.safeAreaInsets.height にすればいいです。 Constraintのconstantを設定した後、UIView.animateの中でlayoutIfNeededを呼んで強制的に再レイアウトすることでアニメーションします。こちらが参考になるかと。 回転をサポートする場合はiPhoneXとかだとSafeInsetの値が変わるので、アニメーションが終わったら非表示にするか、フェードとと組み合わせてごまかしたりする必要があると思います。