it-swarm.com.ru

Сокращение пространства между разделами UITableView

Есть ли способ уменьшить пространство между двумя разделами UITableView? Между каждым разделом у меня есть около 15 пикселей. Я уже пытался вернуть 0 для -tableView:heightForFooterInSection: и -tableView:heightForHeaderInSection:, но это ничего не меняет.

Какие-либо предложения?

132
flohei

Это было немного сложно, но попробуйте этот код:

- (CGFloat)tableView:(UITableView*)tableView 
           heightForHeaderInSection:(NSInteger)section {
    if (section == 0) {
        return 6.0;
    }

    return 1.0;
}

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

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

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

Измените значения соответственно. Чтобы удалить пробел, я думаю, что 0.0 не будет принято. Наименьшее вменяемое значение представляется равным 1,0.

255
Tomen

Для всех, кто хочет уменьшить расстояние до 0, вы должны использовать:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

Поскольку использование UITableViewDelegate дает эффект только начиная с числа с плавающей запятой, большего нуля.

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    return 1.0;
}


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

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

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

(используя iOS 4.1 с XCode 4.0.2) 

132
Martin Stolz

На самом деле вы можете установить высоту нижнего колонтитула/заголовка/ячейки в Интерфейсном Разработчике на вкладке размера. По умолчанию верхний и нижний колонтитулы установлены на 10.0.

33
Chris

Вы должны уменьшить заголовок раздела/высоту нижнего колонтитула. Тогда пространство между разделами будет уменьшено.

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

Меня устраивает :-)

tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
25
Jirune

Вы также можете уменьшить высоту нижнего колонтитула и заголовка раздела из раскадровки. В табличном представлении -> инспектор размеров. Перейти к разделу Высота.

Size inspector for UITableView in storyboard.

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

19
iosCurator

Для меня проблема была в том, что я использовал стиль сгруппированного табличного представления (UITableViewStyleGrouped). Когда я изменил его на простой стиль (UITableViewStylePlain), мой метод tableView:heightForHeaderInSection: был единственным, что определяло размер каждого заголовка раздела.

4
Liron Yahdav

ОБНОВЛЕНИЕ ДЛЯ iOS7: Из-за автоматического обновления ARC, здесь отредактирован код @Martin Stolz.

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return 6;
    return 1.0;
}

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

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

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

(Используя iOS7, Xcode v5.0)

3
Chisx

Используйте это, возможно, 0 не будет работать, как ожидалось 

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

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

Для меня только эта проблема была решена с помощью следующего кода,

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1 : 20 // 20 is my other sections height
}

Возвращение 1 для первого раздела решило проблему.

0
Bharath