Ich verfüge über eine benutzerdefinierte Tabellenansichtszelle, die das automatische Layout verwendet und über einen Offenlegungsindikator als Zubehöransicht verfügt. Die Zellengröße der Zellen auf dem Bildschirm ist völlig falsch, wenn zuerst angezeigt:Benutzerdefiniertes UITableViewCell mit automatischer Layout- und Zubehöransicht
Wie Sie die Zelle sehen können über einen 1,5-Bildschirme im Wert von Raum nimmt:
Allerdings, wenn ich drehe und das Gerät drehen zurück es sieht gut aus:
Wie man hier sehen kann, ich habe nichts getan kompliziert:
Ich habe eine sehr nicht-ideale Problemumgehung, die zu tun ist:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView reloadData];
}
Aber das offensichtlich verursacht eine ‚Flash‘, wenn Sie zum ersten Mal auf den Bildschirm sehen. In einem komplizierteren Szenario ist der Blitz viel offensichtlicher.
Ich habe ein anderes Problem zu umgehen, aber dies bewirkt, dass eine automatische Layout Ausnahme:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
BasicCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BasicCell" forIndexPath:indexPath];
cell.basicLabel.text = @"Hello this is just some text that should get the label to go over multiple lines";
[cell.basicLabel layoutIfNeeded];
return cell;
}
Ausnahme:
Mindestens diese Methode nicht gibt mir UI blinkt.
Wenn ich die Zubehöransicht entferne, funktioniert es wirklich perfekt.
UPDATE: Ich habe ein Beispielprojekt GitHub hinzugefügt: https://github.com/fwaddle/TableCellAccessoryTest
UPDATE # 2: eine andere Arbeit stellte sich heraus, um diesen Fehler die Zelle in Code Layout ist. Ich habe gerade versucht, das gleiche in Code zu tun, und es hat nicht die Warnung geworfen und hat gut funktioniert. Sieht wie ein IB-Fehler aus.
Irgendwelche Ideen, wie Sie dieses Problem umgehen können? Danke.
Setzen Sie Ihre Abhängigkeiten richtig in Ihrer Zelle, was manchmal schwierig sein kann, und setzen Sie dann die 'rowHeight'-Eigenschaft in Ihrer Tabellenansicht auf 'UITableViewAutomaticDimension'. Auch das ist keine Ausnahme, das ist eine Warnung vor Fehlkonfigurationen. Eine nicht abgefangene Ausnahme beendet Ihre Anwendung. – Michael
Hi @Nikita, Die Einschränkungen sind richtig eingestellt und ich habe die rowHeight korrekt eingestellt: - (void) viewDidLoad { [super viewDidLoad]; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 45; } Aber ich nehme Ihren Punkt darüber, keine Ausnahme zu sein. – Mof
Ich denke, das ist ein Problem mit Ihren Einschränkungen. Säubern Sie Ihr Build und entfernen Sie Constraints, die nicht im Layout verwendet werden, und erstellen und führen Sie sie dann aus. – Michael