2011-01-03 8 views
0

Ich habe ein interessantes Problem/Frage und ich bin mir nicht sicher, ob es sogar machbar ist. So habe ich eine benutzerdefinierte Header-Ansicht für reguläre UITableView. Aber es ist transparent und füllt nicht die Fülltischbreite. Es wird also korrekt angezeigt, wenn die Tabelle gescrollt wird und diese Kopfzeile über dem Zelleninhalt angezeigt wird (wird oben angeheftet). Aber wenn der gleiche Header zwischen zwei Sektionen nach unten angezeigt wird, sieht er hässlich aus, weil er transparent ist und entweder über einem schwarzen Rechteck oder über dem Tabellenhintergrund angezeigt wird.viewForHeaderInSection - Kopfzeile erstellen, die in allen Fällen korrekt angezeigt würde

Ich fragte mich, ob es Möglichkeit gibt, Header-Ansicht anzupassen, wenn es an der Spitze bleibt und wenn es nicht ist. Oder ... ist es möglich anzugeben, was unterhalb der Header-Ansicht angezeigt werden soll, wenn es zwischen den Abschnitten liegt. So etwas wie sectionSeparatorView?

screenshot

+0

Screenshots sind willkommen :-) –

+0

einen Screenshot hinzugefügt. Ist klar, wo das Problem liegt? – sha

+0

Wie sollte es aussehen? Scheint zu sein, was ich erwarten würde. Coole Idee BTW. – Eiko

Antwort

0

Im Grunde war die beste Lösung für mein Problem, eine Art Hintergrund für den UITableViewController zu definieren. Es wurde in den Kommentaren zum ursprünglichen Beitrag zur Verfügung gestellt, und leider hat der Autor es nicht als separate Antwort angegeben, so dass ich ihm kein Kopfgeld geben konnte.

+0

Danke für die freundlichen Worte. War sowieso eine schnelle Lösung. :-) – Eiko

0

Warum nicht UITableViewStyleGrouped ändern? In diesem Fall schweben Abschnittsüberschriften nicht über den Tabellenzellen.

+0

Ich will sie schwimmen. Es ist gutes Benehmen. – sha

0

Versuchen Sie sich mit

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 

die Kopfhöhe einzustellen, um 1px und dann die erste Zelle jeden Abschnitt größer machen, um etwas Leerzeichen, um unter dem Header zu erstellen.

+0

Header entfernen und erste Zelle verwenden ist nicht etwas, was ich tun möchte. Ich möchte Header an der Spitze stecken. Ich brauche nur eine Möglichkeit, den Hintergrund unter SECOND-Header zu ändern. – sha

+0

Ich meine nicht, den Header zu entfernen. Ich meine, benutze den Header aber auf 1px Höhe. Es wird dann über die nächste Zelle überlaufen, die Sie größer machen, so dass es einen weißen Hintergrund hat. –

+0

Oder warum modifizierst du den Tabellenhintergrund nicht so, wie du willst? Fügen Sie einfach eine Unteransicht oben und unten mit dem ursprünglichen Hintergrund hinzu? –

0

Ich denke, was du willst, ist nicht möglich. Ich habe von zwei Möglichkeiten zur Umgehung dieses Problems gelernt. Löschen Sie zuerst die Kopfzeile und verwenden Sie die erste Zelle jedes Abschnitts als Kopfzeile mit einem anderen Zellenstil, so dass sie niemals wie eine Kopfzeile an der Spitze bleibt. Die andere Möglichkeit besteht darin, das Layout der Kopfzeile zu ändern, anstatt transparent zu sein, mit einem Hintergrund mit der gleichen Farbe des Hintergrunds der Ansicht.

+0

Das erste wird nicht funktionieren. Siehe andere Kommentare. Der zweite wird, aber dann TOP FIRST Header wird nicht gut aussehen. Sie werden keine Zelle darunter sehen ... – sha

Verwandte Themen