web-dev-qa-db-ja.com

UITableviewのセクション間のスペース

UITableViewの2つのセクション間のスペースを削減する必要があります。私はこれを見ました question しかし、ソリューションはフッターとヘッダーのスペースを結合するため、カスタムヘッダービューを許可しません。

これはUITableViewの写真です。黒い色はUITableView背景色です。

tableview screenshot

45
Joel

この関数をオーバーライドしようとしましたか:

 override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.00001
  }
101
Icaro

フッタービューの高さをストーリーボードまたはXIBで最小値に調整することで、これを解決できると思います。enter image description here

フッターの高さのコードで何を書いたかわかりません。私が間違っていたらごめんなさい。

ITableViewでフッタービューを非表示 の重複の可能性

38
Sudhin Davis

Swift 3の場合

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
13
Ali Haris

Icaroが投稿した回答 に加えて、下の空のスペースを削除するセクションのnilを返すtableView:viewForFooterInSection:メソッドも実装する必要があることを追加したいと思います。次になります:

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0.001f;
}

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return nil;
}
5
Nicholas Allio

ヘッダーとセルテキストの間のスペースを定義するには、メソッドheightForHeaderInSectionを使用する必要があります。たとえば、異なるセクションに応じて変更することもできます。一部のセクションではより多くの距離を表示する必要があり、一部のセクションではギャップを表示したくない場合があります。そのような場合、0.000001fのCGFLOAT_MINを使用できます。例を挙げて、ヘッダーの高さの異なるセクションを使用する方法

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0 || section == 2)
    {
        return 55.0;
    }
    else
    {
        return CGFLOAT_MIN;
    }
}

それがあなたを助けることを願っています。

5
Aks

Swift 4+の場合、これら2つのメソッドをオーバーライドする必要があります

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return UIView()
    }
1
Ladd.c

これも役立ちます:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.sectionHeaderHeight = UITableViewAutomaticDimension
}
1
polarwar

TableViewデリゲートメソッドは、フロート値が0.0fの場合には効果がありません。それより大きい値を指定してみてください。

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0.00001f;
}

- (UIView*)tableView:(UITableView*)tableView
viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}
1
Mithra Singam

デリゲートheightForHeaderInSectionheightForFooterInSectionを実装することで実行できます。

SectionHeaderまたはSectionFooterの高さが0であっても、戻り値は0であってはなりません。非常に小さな値が必要です。CGFLOAT_MINを試してください。

私の例:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == [self.dataArray indexOfObject:self.bannerList]) {
    return 46;
}
return CGFLOAT_MIN;

}

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