ViewControllerビュー内にTableViewを配置しようとしていますが、ナビゲーションバーの下部とテーブルの上部の間に44の高さのギャップを残しています。次に、ギャップ内にUITextFieldを配置して、固定ヘッダーとして機能させたいと思いました。何らかの理由で、TableViewの「プロトタイプセル」の先頭に空の空白があります。そのちょうど空白。ストーリーボードでの表示は次のとおりです。
アプリのディスプレイを表示すると、次のようになります。
テーブルをスクロールすると、正しい場所までずっと移動します。
参加者のViewControllerの「属性インスペクター」(右側のメニュー)を確認してください。オプション 'Extend Edges'を確認し、 'Under Top Bars'のチェックを外してから、tableviewを再配置します。
別の可能な解決策は、オプション 'Adjust Scroll View Insets'のチェックを外すことです。その理由は、viewControllerがエッジを拡張すると、たとえばトップバーの下で、tableViewのscrollViewが自動的にインセットトップを調整するため、tableViewのコンテンツがトップバーの下で正確に開始されるためです。ただし、tableView自体はバーの下から始まるため、これは必要ありません。
ViewControllerに焦点を合わせ、[属性インスペクター]タブに移動しました。
これを試してください:
self.tableView.contentInset = UIEdgeInsetsMake(-65, 0, 0, 0)
これをViewDidLoadメソッドに追加するだけです
self.automaticallyAdjustsScrollViewInsets = NO;
Extend Edgesのデフォルト設定を変更する必要はありません。
実際の問題は、ストーリーボードの空白のテーブルヘッダービューであるように見えます。ストーリーボードのスクリーンショットで、名前の入力ビューのすぐ下、プロトタイプセルビューのすぐ上に表示されます。消して。
これに対する解決策を見つけました。私の場合、私はTabBarViewControllerを使用していました。「スクロールビューのインセットを調整」オプションのチェックを外すだけです。問題はなくなります。
私の問題は、tableHeaderView
を新しいUIView
に設定することです。
self.tableHeaderView = UIView(frame: .zero)
この行を削除すると、問題はなくなりました。これを試して:
//self.tableHeaderView = UIView(frame: .zero)
Objective-Cユーザーの場合、これをViewDidLoadメソッドに追加します。
[self.tableView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];