2016-06-30 10 views
0

Beispielprojekt:http://d.pr/f/TkldWie verhindere ich, dass der Inhalt meiner UITableViewCell andere Zellen überlappt, wenn Sie eine Animation einfügen?

Ich habe eine UITableViewCell Unterklasse, die sehr einfach eine einzelne UIDatePicker Sicht als einziges subview hat.

Wie Calendar.app Ich möchte eine Inline-Datumsauswahl zeigen, wenn der Benutzer auf eine Zelle klopft. Mein Code dafür funktioniert gut (ich habe einfach Auto-Layout berechnen die Höhe und es wächst perfekt), aber die Datumsauswahl überlappt den anderen Inhalt, wie die Zelle wächst, die sehr seltsam aussieht.

Im folgenden Screenshot können Sie sehen, wie "One More Cell" mitten in der Datumsauswahl animiert wird.

enter image description here

Wie verhindere ich dieses Verhalten? Die Zelle, die contentView der Zelle und die Datumsauswahl selbst haben clipsToBounds, also weiß ich nicht, wie es das macht oder was ich tun soll.

Ich habe ein Beispielprojekt beigefügt, das es im kleinstmöglichen Szenario zeigt. Am einfachsten ist es im Simulator mit "Langsame Animationen" unter (Debug> Langsame Animationen) zu sehen, wo die Zelle des Datumsaufrufs während der gesamten Animation außerhalb ihrer Grenzen angezeigt wird.

Antwort

0

Versuchen Sie, tableView(_:heightForRowAtIndexPath:) zu implementieren, und erhöhen Sie die Zellenhöhe für die Datumsauswahlzelle. Ich habe es im Beispielprojekt nicht gesehen. Dies stellt sicher, dass Ihre Zellen die richtige Höhe haben, wenn sie angezeigt werden.

+0

'heightForRowAtIndexPath' ist für Auto-Layout-Zellen nicht erforderlich, es gibt' UITableViewAutomaticDimension' zurück und berechnet sich selbst basierend auf den Integritätsbedingungen der Zelle. Für das, was es wert ist, habe ich versucht, nur Frame-Berechnungen anstelle von Auto-Layout zu verwenden, und das Ergebnis ist das gleiche. –

+0

Interessant, ich habe das vorher nicht benutzt. Ich habe das Projekt ausgeführt und ... es funktioniert wie erwartet (iPhone 6, 9.3)! Welche Version/Simulator hast du benutzt? – Wyatt

+0

Aktivieren Sie langsame Animationen (Debug> Langsame Animationen oder Befehl-T) und Sie werden es sehen können. Ich habe versucht, iPhone 6s Simulator iOS 9.3, auch auf dem Gerät. –

Verwandte Themen