Как изменить высоту между разделами в GROUPED UITableView? - PullRequest
12 голосов
/ 22 марта 2012

Высота по умолчанию для меня слишком велика. Как я могу изменить высоту между двумя секциями?

=============================================== =============================

Извините за мой плохой английский ... Я имею в виду разрыв между двумя разделами слишком велик. Как это изменить?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
    view.backgroundColor = [UIColor blueColor];
    return view;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
    view.backgroundColor = [UIColor redColor];
    return view;
}

Я изменил вид заголовка и нижнего колонтитула каждого раздела. И вот результат: enter image description here

Я думаю, что может быть минимальная высота зазора, потому что я установил высоту верхнего и нижнего колонтитула на 2 пикселя, но зазор между двумя разделами все еще очень велик.

Ответы [ 3 ]

16 голосов
/ 22 марта 2012

Вы можете использовать нижние колонтитулы между каждым из ваших разделов и дать им размер пространства, которое вы хотите, реализовав следующие методы в делегате вашего UITableView.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

В первом методе делегата вы можете вернуть простой экземпляр UIView, а во втором вы можете вернуть высоту, которой должно быть это представление.Этот второй метод делегата должен позволять вам контролировать разрыв между разделами.

4 голосов
/ 10 марта 2016

опробуйте этот код

self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; //    in viewdidload

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

-(CGFloat)tableView:(UITableView *)tableView    heightForHeaderInSection:(NSInteger)section{
    return <your header height>;
}

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

- (UIView *)tableView:(UITableView *)tableView  viewForHeaderInSection:(NSInteger)section{
    return <your header view>;
}

и версия Swift -

func tableView(tableView: UITableView,  viewForFooterInSection section: Int) -> UIView? {
    return your footer view
}

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

    return your footer view height
}

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 0.01
}

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return UIView.init(frame: CGRect.zero)
}
0 голосов
/ 25 августа 2016

Вам необходимо использовать метод heightForHeaderInSection для определения пространства между заголовком и текстом ячейки.Вы также можете изменить его в зависимости от различных разделов, например.в некоторых разделах вам может понадобиться показать большее расстояние, а в некоторых разделах вы не хотите показывать разрыв.В таком случае вы можете использовать

CGFLOAT_MIN, что составляет 0,000001f

.Приведу пример того, как вы можете использовать разные разделы с разной высотой заголовка

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

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...