Utilizzo del simulatore iOS 8.3 e Xcode 6.3.2.Cellule di dimensionamento automatico iOS 8 con vista accessoria
Sto utilizzando la tecnica delle celle di dimensionamento automatico in iOS 8 e funziona in modo eccezionale quando la cella non ha una vista accessoria, ma si interrompe quando la cella ha una vista accessoria. Ho impostato vincoli sull'etichetta all'interno della cellula:
allora io uso un estimatedRowHeight
e impostare il rowHeight
a UITableViewAutomaticDimension
(sto omettendo tableView:numberOfRowsInSection:
qui, ma semplicemente restituisce 3 per questo esempio):
@implementation MyTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 44.0f;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
cell.titleLabel.text = @"Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment ";
return cell;
}
@end
e BAM, tutto sembra grande:
Ma quando aggiungo una vista accessorio Storyboard, senza modificare il codice:
la prima cella va all'inferno. vista debugger di Xcode mi dice l'altezza etichetta è 1785 punti, e ho dovuto usare una gif per mostrare qui:
Ho notato che le altre due cellule vanno bene dimensioni. Ho anche notato che ruotando il simulatore, la prima cella viene ridimensionata correttamente, anche dopo essere stata ruotata di nuovo in verticale.
Qualcuno sa perché la vista accessoria lo incasina così male e cosa posso fare per risolverlo? Un progetto di esempio è disponibile allo http://github.com/UberJason/SelfSizingNightmare.
concordo che la vista accessorio causa i problemi. In questo caso, l'impostazione di preferredMaxLayoutWidth può essere d'aiuto, ma ho avuto altre celle a ridimensionamento automatico (con layout leggermente più complicati) con viste accessorie in cui ciò non è stato di aiuto. Inoltre, chiamare [tableView reloadData] in viewDidAppear funziona, ma rende un'esperienza utente brutta perché le celle "pop" in posizione ... comunque, questo problema sembra risolto meglio in iOS 9 beta, quindi sto solo decidendo di non veramente preoccuparsi per questo. – UberJason