Сокращение пространства между разделами UITableView
Есть ли способ уменьшить пространство между двумя разделами UITableView? Между каждой отдельной секцией имеется около 15 пикселей. Я уже пытался вернуть 0 для -tableView:heightForFooterInSection:
и -tableView:heightForHeaderInSection:
, но это ничего не меняет.
Любые предложения?
Ответы
Ответ 1
Это было немного сложно, но попробуйте этот код:
- (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.
Ответ 2
Для всех, кто хочет уменьшить расстояние до 0, вы должны использовать:
tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;
Потому что обслуживание UITableViewDelegate делает только эффект, начиная с float больше нуля.
-(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)
Ответ 3
Фактически вы можете установить высоты нижнего колонтитула/заголовка/ячейки в Interface Builder под вкладкой размера. По умолчанию верхний/нижний колонтитул установлен в 10.0.
Ответ 4
Вам нужно уменьшить высоту заголовка/нижнего колонтитула. Тогда пространство между разделами будет уменьшено.
попробуйте этот код
Это работает для меня: -)
tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
Ответ 5
Вы также можете уменьшить высоту нижнего колонтитула и заголовка секции из раскадровки. В диспетчере tableview → size. Перейдите к разделу Высота раздела.
![Size inspector for UITableView in storyboard.]()
По умолчанию для таблицы стилей Plain установлено значение 22, а для таблицы сгруппированных стилей - 10. Вы можете настроить значения, увеличивая/уменьшая значения для верхнего и нижнего колонтитулов отдельно.
Ответ 6
Для меня проблема была в том, что я использовал стиль представления сгруппированных таблиц (UITableViewStyleGrouped
). Когда я изменил его на простой стиль (UITableViewStylePlain
), мой метод tableView:heightForHeaderInSection:
был единственным, определяющим размер каждого заголовка раздела.
Ответ 7
Если вы измените стиль с "Сгруппированный" на "Обычный", пространство полностью исчезнет. Вы все еще можете использовать разделы.
Ответ 8
ОБНОВЛЕНИЕ ДЛЯ iOS7: Из-за обновления ARO autorelease здесь редактируется код @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)
Ответ 9
Используйте это, возможно, 0 не будет работать должным образом
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Ответ 10
Для меня эта проблема решена только с помощью следующего кода,
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return section == 0 ? 1 : 20 // 20 is my other sections height
}
Возврат 1 для первого раздела решил проблему.