web-dev-qa-db-ja.com

iOS 7 UITableView:ナビゲーションバーと最初のセルの間のスペースを削除する方法

私の問題は、グループ化されたUITableViewのiOS 7では、テーブルの上部と最初のセルにギャップがあることです。

奇妙なのは、最初にコンテンツを読み込むと、最初の画像のようにテーブルが正常に表示されますが、下にスクロールすると、2番目のように上部と最初のセルの間にスペースが表示されることです:

enter image description hereenter image description here

スタイルプレーンでは、この動作は出ませんでしたが、残念ながらグループ化されたテーブルビューを使用する必要があります。

についてのアイデアは?

59
Fry

これをViewDidLoadメソッドに追加するだけです

self.automaticallyAdjustsScrollViewInsets = NO;
132
Slavcho

答えは私と私のチームにとって非常に面白く、そして魅力のように働いた

  • Interface Builderで、ビュー階層内の別のビューの下にTableViewを移動するだけです。

理由:

これは、ビュー階層の最初のビューでのみ発生します。この最初のビューがUITableViewの場合。したがって、他のすべての類似したUITableViewには、最初のセクションを除き、この迷惑なセクションはありません。 UITableViewをビュー階層の最初の場所から移動してみましたが、すべてが期待どおりに機能していました。

37
Giorgos Ath

それは私の同様の問題を解決します:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
}
25
Alex

Storyboardでxibまたはコントローラーを選択して、View Controllerの属性インスペクターに移動します。 レイアウトの調整スクロールビューインセットの調整のチェックを外します。問題を解決しますenter image description here

16
Muhammad_Awaab

グループ化されたスタイルと1グループのみのUITableViewを使用している場合は、代わりにプレーンスタイルを使用して問題を解決します。

UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
12
clmntcrl

グループ化されたタイプtableViewにおけるこの問題の最も簡単な解決策は次のとおりです。

tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
3

この問題を解決するには、ViewControllerでこのフィールドをオフにしてください。

ViewController >> Attibutes Inspector >> Layout(チェックなし-スクロールインセットの調整

enter image description here

これで十分でない場合は、TableViewでこれを試して、StyleをPlainに設定します。

Example image

これで問題が解決します

3
Daniel Beltrami

みんな!同じ問題がありました。 TableViewは、ナビゲーションバーと最初のセルの間に空きスペースがあります。このコードは私を救った:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return 10;
    }
    else return 2;
}
2
Hot'n'Young

UITableView自体の上、およびセルの間にもスペースがありました。上記の2つの異なる回答で解決策を見つけました。両方の解決策を見逃さないように、もう一度投稿してください。

これにより、上からスペースが削除されました。

self.automaticallyAdjustsScrollViewInsets = NO;

これにより、セルの下のスペースが削除されました。UITableViewの「Style」属性を「Plain」に設定します

1
love2script12

私はXcode 7.3.1iOS9、およびSwift 2。私のために働いたものを共有したいと思います:

これをViewDidLoadメソッドに追加するだけです

self.automaticallyAdjustsScrollViewInsets = false;
1
IPL10

同様の問題があり、AdjustsScrollViewInsetsを自動的にNOに設定することもありました。これは私のために解決しました:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
    return CGFLOAT_MIN;
}
0
iuricernov

これはかなり前に回答されたことがわかりますが、同様の状況に陥った他の人のために、私が最終的に働いたものを共有します:

Xibを使用している場合は、最上位のビューを選択し、属性インスペクターのシミュレートされたメトリックス領域で「ステータスバー」を「なし」に設定します。間隔の問題を修正しました。

0
Luke

私にとってこれはうまくいきませんでした

self.automaticallyAdjustsScrollViewInsets = NO;

これにより、テーブルビューがNavigationBarの下にのみ配置されました。

私のために働いたのは、ストーリーボードに行き、tableViewのサイズを変更することでした。私のtableViewには、ステータスバーを許可するために上部に20pxのギャップがあったようです。私はそれをスケーリングし、すべてが完全に整列しました。

0
vinylDeveloper

IOS 7以降では、グループヘッダーといくつかのスペースが自動的に取得されます。アプリを設定アプリと比較すると、表示されます。ヘッダーの高さをできるだけ小さく設定するようUITableViewに指示することで、この問題を回避できます。 最初のグループヘッダーを非表示にする方法 を参照してください。

0

非常に奇妙な状況で、テーブルビューの1つの上部にこの余分なスペースが表示されていました。

ナビゲーションスタックの最初のコントローラーのルートビューとしてUIScrollViewを追加した後、次のコントローラーをShow Detailセグエとして提示した場合、次のコントローラーにはテーブルビューの上にスペースがあります。

私にとっての解決策は、セグエをPresent Modallyに変更することで、すべてが正常に戻りました。

セグエの変更の最も奇妙な部分は、beforeルートビューをUIScrollViewに追加し、Show Detailセグエが次のコントローラをモーダルモードで表示することでした。それでもafterルートUIScrollViewを追加し、Show Detailセグエは次のコントローラーでpushingでした(これは私が望んでいたものではありませんでした)。

0
Adam Johns