2010-05-12 7 views
124

Czy istnieje sposób na zmniejszenie odstępu między dwiema sekcjami widoku UITableView? Pomiędzy każdą pojedynczą sekcją mam około 15 pikseli. Próbowałem już zwrócić 0 dla -tableView:heightForFooterInSection: i -tableView:heightForHeaderInSection:, ale to niczego nie zmienia.Ograniczanie odstępu między sekcjami UITableView

Wszelkie sugestie?

Odpowiedz

246

To było trochę trudne, ale spróbuj tego kodu:

- (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]; 
} 

zmienić wartości odpowiednio. Aby usunąć przestrzeń, myślę, że 0.0 nie zostanie zaakceptowany. Najmniejszą wartością wydaje się być 1,0.

+2

Yay, super, to działa! Dzięki! – flohei

+0

serdecznie zapraszamy – Tomen

+1

+1 Dziękuję Tomen, dokładnie to, czego potrzebowałem. –

31

Rzeczywiście można ustawić wysokość stopki/nagłówka/komórki w Konstruktorze interfejsów pod zakładką rozmiaru. Domyślnie nagłówek/stopka są ustawione na 10.0.

+0

Myślę, że takie zachowanie zostało dodane w iOS 5.0 lub iOS 6.0, ale tak - teraz znacznie łatwiej jest ustawić odległość między grupami. – Argentumko

+2

Wiem, że to jest stare, ale chciałem skomentować, że od XCode 5 i iOS 7, wydaje się, że to musi być zrobione w kodzie. Ustawiłem go w konstruktorze interfejsów na 0 i nadal był ustawiony na 1, dopóki nie ustawię go w kodzie na 0. – Ahmad

+0

Z Xcode 6 i iOS 8 wydaje się pracować z tylko konfiguracją w storybooku. –

22

Musisz zmniejszyć wysokość nagłówka/stopki sekcji. Wtedy przestrzeń między sekcjami zostanie zmniejszona.

wypróbować ten kod

To działa na mnie :-)

tableView.sectionHeaderHeight = 2.0; 
tableView.sectionFooterHeight = 2.0; 
120

Dla wszystkich, którzy chcą zmniejszyć dystans do 0 trzeba użyć:

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

Ponieważ porcja z UITableViewDelegate robi tylko efekt zaczynając od wartości pływających większych od zera.

-(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]; 
} 

(przy użyciu iOS 4.1 z Xcode 4.0.2)

+6

return 0.0001; działa dla mnie. Używam xcode 4.6 i iOS 6.1 – Sam

+2

Pierwsze dwie linie działają dla mnie. –

+0

Twoja odpowiedź to ratownik: P – iamyogish

2

Aktualizacja dla iOS7: Due ARC autorelease aktualizację, oto kod @Martin Stolz edytowany.

-(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)]; 
} 

(Korzystanie iOS7, Xcode v5.0)

17

Można również zmniejszyć wysokość sekcji nagłówka i stopki z serii ujęć. W inspektorze tableview -> size. Przejdź do sekcji Wysokość.

Size inspector for UITableView in storyboard.

Domyślnie jest on ustawiony na 22 dla zwykłego tabeli stylów i 10 dla zgrupowanych tabeli stylów. Możesz skonfigurować wartości, zwiększając/zmniejszając oddzielnie wartości dla nagłówka i stopki.

2

Dla mnie problem polegał na tym, że używałem zgrupowanego stylu widoku tabeli(). Kiedy zmieniłem go na zwykły styl (UITableViewStylePlain), moja metoda tableView:heightForHeaderInSection: była jedyną rzeczą określającą rozmiar nagłówka każdej sekcji.

0

Dla mnie właśnie ten problem został rozwiązany tylko za pomocą następującego kodu,

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

Wracając dla pierwszego odcinka rozwiązał ten problem.

Powiązane problemy