質問: verysimpletableviewcontroller.init(style: .grouped) self.navigationcontroller?.pushviewcontroller(vc, animated: true) } } 編集2:私はuinavigationbarの私のカスタマイズに問題を絞り込むことができました。私はこのようなカスタマイズをしています:rootnavcontroller.navigationbar.setbackgroundimage(createfilledimage(withcolor: .white, size: 1), for: .default)createfilledimageは与えられたサイズと色で正方形の画像を作成します。この行をコメントアウトすると、通常の動作に戻ります。私はこの問題についての考えをいただければ幸いです。
回答: これが私がどうやってこの問題を解決することができたか それでもios 11が自動的にインセットを設定することを可能にしている間 である。私はuitableviewcontrollerを使っています。 ストーリーボードのビューコントローラで、「トップバーの下のエッジを延長する」および「不透明バーの下のエッジを延長する」を選択します(またはプログラム的に)。セーフエリアインセットはあなたの視野がトップバーの下に行かないようにします。 ストーリーボードのテーブルビューで[セーフエリアへのインセット]ボタンをクリックします。 (またはtableview.insetscontentviewstosafearea = true) - これは必要ではないかもしれませんが、それは私がしたことです。 コンテンツインセット調整動作を "スクロール可能な軸"(またはtableview.contentinsetadjustmentbehavior = .scrollableaxes)に設定します - .alwaysも機能する可能性がありますが、テストしませんでした。 他のすべてが失敗した場合に試すべきもう一つのこと:viewsafeareainsetsdidchange uiviewcontrollerメソッドをオーバーライドして、table viewがscroll viewのインセットをセーフエリアのインセットに強制的に設定するようにします。これは、マギーの答えの「しない」設定と関連しています。- (void)viewsafeareainsetsdidchange { [super viewsafeareainsetsdidchange]; self.tableview.contentinset = self.view.safeareainsets; } 注:uitableviewcontrollerの場合、self.tableviewとself.viewは同じものにする必要があります。