Depuis que j'ai découvert AutoLayout
Je l'utilise partout, maintenant j'essaie de l'utiliser avec un tableHeaderView
.
J'ai fait un subclass
de UIView
J'ai ajouté tout ce que je voulais (étiquettes etc...) avec leurs contraintes, puis j'ai ajouté ceci CustomView
à la UITableView
' tableHeaderView
.
Tout fonctionne bien, sauf le UITableView
affiche toujours au-dessus de el CustomView
par au-dessus de Je veux dire le CustomView
es sous el UITableView
pour qu'on ne puisse pas le voir !
Il semble que peu importe ce que je fais, les height
de la UITableView
' tableHeaderView
es toujours 0 (ainsi que la largeur, x et y).
Ma question : est-il possible d'accomplir cette tâche ? sans régler le cadre manuellement ?
EDIT : Le site CustomView
' subview
que j'utilise a ces contraintes :
_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepLeftInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepBottomInset rules:@[[KeepMin must:5]]]];
J'utilise une bibliothèque pratique, 'KeepLayout', car écrire des contraintes manuellement prend une éternité et nécessite beaucoup trop de lignes pour une seule contrainte, mais les méthodes s'expliquent d'elles-mêmes.
Et le UITableView
a ces contraintes :
_tableView = [[UITableView alloc]init];
_tableView.translatesAutoresizingMaskIntoConstraints = NO;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:_tableView];
[_tableView keep:[KeepTopInset rules:@[[KeepEqual must:0]]]];// These 4 constraints make the UITableView stays 0 away from the superview top left right and bottom.
[_tableView keep:[KeepLeftInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepRightInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepBottomInset rules:@[[KeepEqual must:0]]]];
_detailsView = [[CustomView alloc]init];
_tableView.tableHeaderView = _detailsView;
Je ne sais pas si je dois définir des contraintes directement sur l'interface de l'utilisateur. CustomView
Je pense que la hauteur de la CustomView est déterminée par les contraintes sur l'interface de l'utilisateur. UILabel
"titre" dans celui-ci.
EDIT 2 : Après une autre enquête, il semble que la hauteur et la largeur du CustomView soient correctement calculées, mais le haut du CustomView est toujours au même niveau que le haut du UITableView et ils se déplacent ensemble lorsque je fais défiler.