it-swarm.dev

Entfernen von Zellrahmen aus einem UITableView-Abschnitt mit gruppierten Elementen

Ich habe einen UITableViewController, der mit dem gruppierten Stil initialisiert wurde und mehrere Abschnitte hat. Für einen dieser Abschnitte möchte ich, dass die konstituierenden Zellen vollständig transparent sind und keine Grenzen haben. Ich habe vor, für jede Zeile in diesem Abschnitt eine benutzerdefinierte Ansicht zuzuweisen, aber diese benutzerdefinierte Ansicht wird von der gruppierten Tabellenzelle umgeben. 

Das Folgende macht die Hintergrundfarbe einer Zelle schwarz statt transparent ... Und ich weiß immer noch nicht, wie ich die Grenze loswerden kann.

cell.backgroundColor = [UIColor clearColor];

Irgendwelche Hinweise? Vielen Dank!

64
Tim

NOTE: Funktioniert unter iOS7 und höher nicht. Für iOS7 versuchen Sie this answer.

So entfernen Sie für iOS6 und darunter den gruppierten Hintergrund aus einer Zelle in einer gruppierten Tabellensichtzelle:

Das hat nicht funktioniert

cell.backgroundView = nil; // Did Not Work

Das tat 

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];

Wenn Sie zu ARC gewechselt sind (ich habe gehört, dass dies funktioniert, aber es nicht getestet hat)

cell.backgroundView = [UIView new];
159
Intentss

Sie müssen tatsächlich einstellen

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

um den Rand von Zellen zu entfernen.

39
Chintan Patel

Der folgende Hack funktioniert in iOS 7 - vorerst. :)

Unterklasse UITableViewCell und verwenden Sie diese Zelle für den Abschnitt, der keine Trennzeichen enthalten sollte.
Überschreiben Sie die addSubview-Methode in Ihrer Zellunterklasse:

-(void)addSubview:(UIView *)view
{
    // The separator has a height of 0.5pt on a retina display and 1pt on non-retina.
    // Prevent subviews with this height from being added. 
    if (CGRectGetHeight(view.frame)*[UIScreen mainScreen].scale == 1)
    {
        return;
    }

    [super addSubview:view];
}
37
Andreas Ley

Dafür hat es funktioniert, eine gruppierte Stiltabelle zu haben

[tableView setSeparatorColor: [UIColor clearColor]];

24
Fede Mika

Dieser Code hat für mich funktioniert :) 

[self.tableView setSeparatorColor:[UIColor clearColor]];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
19
Nicolò Ciraci

Setzen Sie die backgroundView der Zelle auf null. Bei einer gruppierten Tabelle ist das Zellenbild Teil dieser Ansicht.

2
user511132
cell.backgroundColor = [UIColor clearColor];

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
1

Das Festlegen des Trennzeichenattributs auf none funktioniert ab iOS 8 ebenfalls.

Get rid of cell border

1
prabhu

Versuchen Sie es mit tableView.separatorColor = [UIColor clearColor];

Und tableView.separatorStyle = UITableViewCellSeparatorStyleNone; nicht verwenden

Ich habe mit beiden getestet: Wenn der Stil keinen hat, funktioniert die Unsichtbarkeit der Abschnittsgrenzen nicht, sondern ändert stattdessen nur die Farbe und der Abschnittsrand erscheint als nicht vorhanden.

iOS scheint zu unterscheiden, dass ein Objekt zu keinem Objekt wird und ein Objekt transparent wird

1
petershine
cell.backgroundView = [UIView new];

Klappt wunderbar! Geprüft! iOS6

1
Ricardo Funk

Durch das Festlegen einer Inhaltsansicht wird auch die Grenze entfernt. Stellen Sie Ihre benutzerdefinierte Ansicht auf cell.contentView ein.

0
BTRUE

Ich dachte nur, ich würde meinen Kommentar in @Intentss in eine Antwort umwandeln, weil es vielleicht für diejenigen nützlich ist, die seine Lösung verwenden.

Verwenden von iOS6.1 mit einer gruppierten UITabelView und ARC:

[tableView setSeparatorColor: [UIColor clearColor]];

Funktioniert nicht

cell.backgroundView = [[UIView-Zuordnung] initWithFrame: CGRectZero];

Funktioniert

0
 UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
 backView.backgroundColor = [UIColor clearColor];
 cell.backgroundView = backView;
 cell.backgroundColor = [UIColor clearColor];
 [cell.contentView addSubview:imageView];
0
user1635181

Die einfachste Methode zum Entfernen von Zellrahmen aus einem UITableView-Abschnitt mit Gruppenstil:

[tableViewOutlet setBackgroundView:nil];

in der viewDidLoad-Methode.

0
Kevin Zych

Wenn Sie über eine benutzerdefinierte UITableCellView verfügen, können Sie Ihrer Ansicht die folgende Methode hinzufügen, um die Hintergrundansicht zu entfernen.

- (void)setBackgroundView:(UIView *)backgroundView
{
    // We don't want background views for this cell.
    [super setBackgroundView:nil];
}
0
Kostub Deshmukh