2012-05-12 8 views
5

Ich hatte eine einfache gestylte UITableView, und Zellen sind eine Unterklasse von UITableViewCell.Zeichnen Sie vertikale Trennzeichen auf UITableViewCell

In der Zelle Unterklasse overrode ich drawRect diese Zeichnung Code in (für eine vertikale Trenn) zu setzen:

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); 
CGContextBeginPath(c); 
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0); 
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height); 
CGContextStrokePath(c); 

Es hat super funktioniert. Allerdings habe ich jetzt den Tabellenansichtsstil auf gruppiert geändert. Die Linie wird einfach nicht gezeichnet. Obwohl Einstellungen einen Haltepunkt zeigen, wird die drawRect-Methode aufgerufen.

Ich möchte UIView Unterklassen zu vermeiden, nur um eine kleine Linie zu zeichnen, zumal ich bereits die Tabellenansicht Zelle subclassed und ich möchte nur auf die Zelle zu zeichnen. Warum hört der Code plötzlich auf, an einer gruppierten Tabellenansicht zu arbeiten?

+0

versuchen resetting simulator n cleeing ur prjct – Saad

Antwort

10

Es ist keine gute Idee, drawRect in UITableViewCell Unterklassen zu überschreiben. Wenn Sie die benutzerdefinierte Zelle backgroundView nicht festlegen möchten, können Sie einfach UIView der Breite 1px hinzufügen.

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)]; 
vertLineView.backgroundColor = [UIColor redColor]; 
[self.contentView addSubview:vertLineView]; 
+1

Einverstanden. Oder Sie können der Zelle ein UIImageView mit einem benutzerdefinierten Linienbild hinzufügen. – Joel

+1

Warum ist das keine gute Idee? –

+0

Ich glaube, ich habe mich geirrt. In einigen Fällen kann es sinnvoll sein, 'drawRect' zu überschreiben. – onegray

Verwandte Themen