J'ai besoin de réduire l'espace entre deux sections de UITableView
. J'ai regardé ceci question mais la solution ne permet pas l'affichage en-tête personnalisé, car elle combine l'espace du pied de page et de l'en-tête.
Voici une image du UITableView
. La couleur noire est la couleur de fond UITableView
.
Avez-vous essayé de remplacer cette fonction:
override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.00001
}
Je pense que vous pouvez résoudre ce problème en ajustant la hauteur de vue du pied de page à sa valeur minimale: dans Storyboard ou XIB.
Je ne sais pas ce que vous avez écrit dans votre code pour la hauteur du pied de page. Désolé si je me trompe.
Possibilité de dupliquer Masquer la vue du pied de page dans UITableView
Pour Swift 3
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
Avec le réponse publiée par Icaro Je voudrais ajouter que vous devez également implémenter la méthode tableView:viewForFooterInSection:
Renvoyant nil
pour la section dont vous souhaitez supprimer l'espace vide ci-dessous il deviendra alors:
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 0.001f;
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return nil;
}
Vous devez utiliser la méthode heightForHeaderInSection pour définir l'espace entre le texte de l'en-tête et de la cellule. Vous pouvez également le modifier en fonction des différentes sections, par exemple. dans certaines sections, vous devrez peut-être afficher plus de distance et sous certaines sections, vous ne souhaitez pas afficher de fossé. Dans ce cas, vous pouvez utiliser CGFLOAT_MIN qui est 0.000001f. En vous donnant un exemple, comment utiliser différentes sections avec différentes hauteurs d'en-tête
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0 || section == 2)
{
return 55.0;
}
else
{
return CGFLOAT_MIN;
}
}
J'espère que cela vous aidera.
Pour Swift 4+, vous devez remplacer ces deux méthodes.
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
Cela peut aussi aider:
override func viewDidLoad() {
super.viewDidLoad()
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
}
Les méthodes de délégué TableView n'affectent pas avec une valeur float égale à 0.0f. Essayez de donner une valeur supérieure à celle.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 0.00001f;
}
- (UIView*)tableView:(UITableView*)tableView
viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
Vous pouvez le faire en implémentant le délégué heightForHeaderInSection
& heightForFooterInSection
.
La valeur de retour ne doit pas être 0, même si SectionHeader ou la hauteur de SectionFooter est 0, il faut une très petite valeur, essayez CGFLOAT_MIN
.
pour mon exemple:
- (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;
}