Transparente Pixelreihe zwischen Abschnittskopf und erster Zelle in einer gruppierten UITableView

8

Wie der Titel sagt, habe ich ein Problem mit einer Reihe von transparenten Pixeln, die ich nicht loswerden kann.
Ich habe ein Bild angehängt, da es 1000 Worte wert ist.

Ссылка

Das Problem ist nicht für die Abschnittsfußzeile vorhanden (wo ich auch eine benutzerdefinierte Ansicht verwende). Ich habe überprüft und überprüft, dass ich die richtige Größe für die Höhe des Abschnitts zurückgeben.

Irgendwelche Ideen?

BEARBEITEN:
Ich habe ein Testprojekt hinzugefügt, damit Sie herumspielen können. Die violette Farbe repräsentiert die Hintergrundfarbe. Die weißen Rechtecke sind die Kopf- / Fußzeile und die hellgrauen sind einige Dummy-Zellen. Das Problem ist im Projekt deutlich sichtbar.

TransparentRowBug XCode-Projekt

Sie werden auch sehen, dass ich viele klare Farben verwende. Leider ist es keine praktikable Lösung für mich, die Farben zu ändern, um das Problem zu verbergen.

Probieren Sie es (oder mehr) aus!

Vielen Dank!

EDIT2:
Nach weiteren Untersuchungen kam ich zu dem Schluss, dass die Pixelzeile vom tableview separator kommt. Im Testprojekt setze ich die Trennzeichenfarbe auf clearColor. Wenn ich dies zu einer anderen Farbe ändere, bekomme ich genau diese Pixelreihe in der neuen Farbe. Obwohl ich den Trennungsstil auf "none" gesetzt habe, scheint er keine Auswirkungen auf gruppierte Tabellen zu haben.

    
Andrei Stanescu 27.04.2011, 23:20
quelle

5 Antworten

10

Ich habe das nach fast zwei Testtagen (und Haarausfall) endlich herausgefunden.

Wie ich oben in meinem Kommentar gesagt habe, funktioniert die Rückgabe einer kleineren Höhe in der heightForHeader-Methode nicht. Damit es funktioniert, müssen Sie die gewünschte Header-Ansicht verwenden, sie in eine Dummy- / Containeransicht mit der exakt gleichen Größe einfügen und dann diesen Container der Tabellenansicht als Überschrift geben.

Dann, wenn Sie eine kleinere Größe für die Kopfzeile zurückgeben, schafft es es magisch (und es ist wirklich magisch für mich), diese lästige Reihe von Pixeln zu überlappen.

Ich bin übrigens zu dem Schluss gekommen, dass die Pixelzeile auf die Zellentrennlinie zurückzuführen ist.

Wenn jemand interessiert ist, kann ich das Arbeitstestprojekt erneut hochladen.

    
Andrei Stanescu 28.04.2011, 22:56
quelle
0

Ich bin mir nicht sicher, ob Sie das fragen, aber ich habe vor zwei Tagen herausgefunden, dass Sie den Standardbereich zwischen den Abschnitten in einer Tabellenansicht reduzieren können ...

Indem heightForHeader einen negativen Wert zurückgibt! Schmutzig, aber ... funktioniert.

Ich hoffe, dass Hilfe ...

    
Vincent Guerci 28.04.2011 23:10
quelle
0

Ich bin auch auf dieses Problem gestoßen. Ich hatte eine UITableView mit gruppierten Abschnitten. Zwischen dem ersten Abschnittskopf und der ersten Zelle gab es eine 1-Punkt-Lücke (2 Retina-Pixel), wo der Hintergrund durchblutete.

Wenn die Farbe der Hintergrundfarbe einheitlich ist, können Sie backgroundColor von UITableView zuweisen, um diese Lücke zu verbergen.

In meinem Fall wurde die backgroundColor / backgroundView für einen nicht-scrolling gemusterten Hintergrund auf anderen Zellen verwendet. Die von mluisbrown vorgeschlagene Lösung funktioniert perfekt. Ich möchte diese Lösung noch einmal betonen:

%Vor%     
Richard H Fung 26.11.2013 18:35
quelle
0

Fügen Sie ein Trennzeichen zwischen der Kopfzeilenansicht und der ersten Zeile hinzu: - Fügen Sie für die Kopfzeile in der Delegate-Methode eine Unteransicht hinzu. self.separator // @ property (nichtatomisch, stark) UIImageView * separator;

%Vor%     
YaBoiSandeep 01.04.2014 13:15
quelle
0

Gruppierte UITableView nimmt Header, Zelle und Fußzeile als eine einzelne Entität. Die weiße transparente Ansicht ist also die Fußzeilenansicht, die durch Verringern der Fußzeilenhöhe wie im Screenshot dargestellt behandelt werden kann. Ich hoffe, es funktioniert Viel Glück:)

    
ManikLamba 11.08.2014 07:31
quelle