Ich habe die folgende Anforderung. Wenn eine UITableViewController
-Ansicht angezeigt wird, gibt es eine variable Anzahl von Zeilen. Unterhalb der Zeilen sollte eine Schaltfläche angezeigt werden.
Wenn die Anzahl der Zeilen klein ist, sollte die Schaltfläche am unteren Rand der Ansicht verankert werden.
Wenn die Anzahl der Zeilen größer ist, sollte die Löschschaltfläche unmittelbar nach der letzten Zeile platziert werden.
Mit anderen Worten:
Und nicht:
Mein bisher bestmöglicher Versuch bestand darin, tableFooterView
zu setzen und zu versuchen, seine Höhe mit contentSize
von UITableView
zu aktualisieren, aber ich stoße auf alle möglichen Probleme. Ich könnte diesen Weg fortsetzen und um Hilfe bitten, aber zuerst möchte ich wissen, ob jemand alternative (bessere) Lösungen hat.
Das Ergebnis muss gut mit einer Statusleiste doppelter Größe (z. B. während eines Anrufs) funktionieren, und ich bin auf iOS 6.0 ausgerichtet. Ich verwende keinen Interface Builder.
Eine mögliche Lösung, um diesen Effekt zu erzielen, könnte sein, zwei verschiedene Lösungen zu verwenden.
Wenn die Anzahl der Zeilen bedeutet, dass die Schaltfläche nicht auf dem Bildschirm angezeigt wird, verwenden Sie die Fußzeilenansicht so, wie Sie es gemacht haben.
Wenn die Anzahl der Zeilen bedeutet, dass die Schaltfläche nicht auf dem Bildschirm angezeigt wird,
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
und aktualisieren Sie den Rahmen der Schaltfläche so, dass sie von unten nach oben verschoben wird. Der Offset von unten kann einer Logik wie dieser folgen
Dies würde bedeuten, dass sich die Schaltfläche beim Scrollen immer noch nach oben und unten bewegt, aber Sie müssen sich nicht mit der footerView-Höhe anlegen
Behalten Sie sowohl die Tabellenansicht als auch eine Schaltfläche in der Bildlaufansicht. Behalten Sie die Schaltfläche am unteren Rand der Bildschirmansicht. Für ein ordnungsgemäßes Scrollen zur Arbeit möchten Sie möglicherweise die Eigenschaft scrollEnabled
der Bildlaufansichten festlegen. Für weitere Details überprüfen Sie dies
Scrollen eines UITableView in einem UIScrollView
BEARBEITEN:
yourView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
Überprüfen Sie die akzeptierte Antwort für diese Frage, um weitere Details zur Implementierung von Streben und Federn mit Code zu erhalten: UIView autoresizingMask - Interface Builder für Code - Erstellen Sie programmatisch Streben und Federn - Schnell oder Ziel-C
Tags und Links uitableview ios cocoa-touch uiview