Desde que descubrí AutoLayoutque lo uso en todas partes, ahora intento usarlo con un tableHeaderView.
Hice una subclassde UIViewagregado todo (etiquetas etc ...) que quería con sus limitaciones, y luego añadí esta CustomViewa la UITableView' tableHeaderView.
Todo funciona bien, excepto las UITableViewsiempre aparece por encima de la CustomView, por encima me refiero al CustomViewdecir bajo el UITableViewpor lo que no puede ser visto!
Parece que no importa lo que haga, el heightdel UITableView' tableHeaderViewes siempre 0 (también lo es el ancho, xey).
Mi pregunta: ¿es posible lograr esto sin configurar el marco manualmente ?
EDITAR:
El CustomView' subviewque 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 UITableViewtiene 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.