2012-05-12 70 views
5

Miałem zwykły styl UITableView, a jego komórki są podklasą UITableViewCell.Rysuj pionowy separator na UITableViewCell

W podklasy komórek ja overrode drawRect umieścić ten kod wciągnięcia (dla pionowego separatora):

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); 

Działało świetnie. Jednak zmieniłem styl tableview na zgrupowany. Linia po prostu nie jest narysowana. Chociaż ustawienia punktu przerwania wskazują na wywołanie metody drawRect.

Chciałbym omijać podklasy UIView tylko po to, aby narysować małą linię, szczególnie, że już podklasowałem komórkę widoku tabeli i po prostu chcę rysować na komórce. Dlaczego więc kod nagle przestaje działać w zgrupowanym widoku tabeli?

+0

spróbuj zresetować symulator n wyczyścić prjct – Saad

Odpowiedz

10

Nie jest dobrym pomysłem zastąpienie podklasy drawRect w UITableViewCell. Jeśli nie chcesz ustawiać niestandardowej komórki backgroundView, możesz po prostu dodać prostą UIView o szerokości 1px.

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

Uzgodnione. Lub możesz dodać UIImageView z niestandardowym obrazem linii do komórki. – Joel

+1

Dlaczego nie jest to dobry pomysł? –

+0

Myślę, że się myliłem. W niektórych przypadkach może być uzasadnione przesłonięcie 'drawRect'. – onegray