Da quando ho scoperto di AutoLayout
usarlo ovunque, ora sto cercando di usarlo con un file tableHeaderView
.
Ho fatto una subclass
delle UIView
aggiunto tutto (etichette, ecc ...) Ho voluto con i loro vincoli, poi ho aggiunto questo CustomView
al UITableView
' tableHeaderView
.
Tutto funziona bene, tranne i UITableView
sempre visualizzato sopra la CustomView
, da sopra mi riferisco al CustomView
è sotto il UITableView
modo che non può essere visto!
Sembra che non importa quello che faccio, il height
del UITableView
' tableHeaderView
è sempre 0 (così è la larghezza, xey).
La mia domanda: è possibile farlo senza impostare manualmente la cornice ?
EDIT:
L CustomView
' subview
che sto usando ha questi vincoli:
_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]]]];
Sto usando una comoda libreria 'KeepLayout' perché la scrittura manuale dei vincoli richiede un'eternità e troppe righe per un singolo vincolo, ma i metodi si spiegano da soli.
E UITableView
ha questi vincoli:
_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;
Non so se devo impostare alcuni vincoli direttamente sul CustomView
, penso che l'altezza del CustomView sia determinato dai vincoli sul UILabel
"titolo" in esso.
MODIFICA 2: Dopo un'altra indagine sembra che l'altezza e la larghezza di CustomView siano calcolate correttamente, ma la parte superiore di CustomView è ancora allo stesso livello della parte superiore di UITableView e si muovono insieme quando scorro.