2013-10-01 14 views
30

Die unten UITableView hat benutzerdefinierte UITableViewCells und ich kann die Separatoren fein mit dieser Linie in den benutzerdefinierten UITableViewCell einstellen:iOS7 letzte Zelle in UITableView Schnittkräften in voller Breite Separator

self.separatorInset = UIEdgeInsetsMake(0, kDefaultSeparatorLeftInset, 0, 0); 

jedoch die Zelle am Ende des Abschnitts hat ein Standardtrennzeichen, das die benutzerdefinierte UIEdgeInsets überschreibt, die ich einstelle.

Ich möchte alle die Separatoren die gleiche Breite haben, gibt es eine Möglichkeit, dies ohne Neuzeichnen der Separatoren manuell zu tun?

UITableView with wide section separator in iOS7

Antwort

12

Nach einigen Experimenten ich die einzige wirkliche Lösung gefunden haben, ist die UITableViewStyle-UITableViewStylePlain und legen Sie leeren Fußzeilen setzen mit:

-(UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    return [[UIView alloc] initWithFrame:CGRectZero]; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    return 0.01f; 
} 

Dies wird keine zufriedenstellende Lösung für einige, weil UITableViewStylePlain nicht bereitstellt alle Funktionen von , aber es gibt mir den Abschnitt ohne die volle Breite Separator.

enter image description here

+1

Dies ist eine nette Lösung, aber ich bevorzuge es, einfach die Standardtrennzeichen zu verbergen und eine 1px-Ansicht am Ende meiner Tabellenzellen hinzuzufügen. – Sulthan

+6

Ich habe die gleiche Situation und es funktioniert, bis ich auf die letzte Zelle klopfe. Nach tap last Trennzeichen ist wieder volle Breite und ändern Sie es in Code '[self.tableView setSeparatorInset: UIEdgeInsetsMake (0, 15, 0, 0)]' hat nicht geholfen. Irgendeine Lösungsmöglichkeit? – lvp

+1

Scheint, dass 'viewForFooterInSection' eigentlich unnötig ist. Die Rückkehr von .01f als 'heightForFooterInSection' scheint den Trick zu machen. Kein hängender Separator mehr! – Nuthatch

2

Verwenden Sie die separatorInset Eigenschaft auf dem Tableview selbst, anstatt auf einzelnen Zellen. Das tableView-Trennzeichen setzt den Standardinset, der von Zellen überschrieben werden kann, sowie den Insert für die "Extra" -Zellen am unteren Rand.

+6

Leider ist der Tableview sich ändernden in iOS7 'separatorInset' wirkt sich nicht auf die Separatoren am Anfang und Ende jedes Abschnitts: tableFooterView kann Separator wie diese abgedeckt werden. Diese scheinen die Breite der TableView dauerhaft zu füllen. Das Ändern des 'separatorInset' wirkt sich nur auf die mittleren Trennzeichen aus. –

2

dem Tisch eine leere Fußzeile geben:

self.tableFooterView = [[UIView alloc] init] 
+0

Ich sehe nicht, wie die Leute das nicht benutzen. Dies funktionierte einwandfrei, als andere Methoden mir so viele Probleme gaben –

4

Nach einigen Experimenten ich Lösung gefunden habe!

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)]; 
UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(0, -1, 320, 2)]; 
v2.backgroundColor = [UIColor whiteColor]; 
v.backgroundColor = [UIColor whiteColor]; 
[v addSubview:v2]; 
self.tableView.tableFooterView = v; 
+0

Das funktionierte für mich! Ich habe auch 'v' in viewForFooterInSection zurückgegeben. Vielen Dank! – Jacob

Verwandte Themen