Desde que descubrí AutoLayout
que lo uso en todas partes, ahora intento usarlo con un tableHeaderView
.
Hice una subclass
de UIView
agregado todo (etiquetas etc ...) que quería con sus limitaciones, y luego añadí esta CustomView
a la UITableView
' tableHeaderView
.
Todo funciona bien, excepto las UITableView
siempre aparece por encima de la CustomView
, por encima me refiero al CustomView
decir bajo el UITableView
por lo que no puede ser visto!
Parece que no importa lo que haga, el height
del UITableView
' tableHeaderView
es siempre 0 (también lo es el ancho, xey).
Mi pregunta: ¿es posible lograr esto sin configurar el marco manualmente ?
EDITAR:
El CustomView
' subview
que estoy usando tiene estas restricciones:
_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]]]];
Estoy usando una biblioteca práctica 'KeepLayout' porque escribir restricciones manualmente toma una eternidad y demasiadas líneas para una sola restricción, pero los métodos son autoexplicativos.
Y UITableView
tiene estas limitaciones:
_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;
No sé si tengo que establecer algunas restricciones directamente en el CustomView
, creo que la altura de CustomView está determinada por las restricciones en el UILabel
"título" en él.
EDITAR 2: Después de otra investigación, parece que la altura y el ancho de CustomView se calcularon correctamente, pero la parte superior de CustomView todavía está al mismo nivel que la parte superior de UITableView y se mueven juntos cuando me desplazo.