2012-06-20 2 views
1

В IB,UITableViewSeparator в сгруппированном столеView

Стиль: сгруппированный, однолинейный травленная, цвет белый. Фон моего представления ясный цвет.

В viewDidLoad этого ViewController, создать фиктивную вид фона:

UIView *tableBgView = [[UIView alloc] initWithFrame:self.tableView.frame]; 
tableBgView.backgroundColor = [UIColor clearColor]; 
self.tableView.backgroundView = tableBgView; 
[tableBgView release]; 

В cellForRowAtIndexPath у меня есть:

UIView *bgView = [[UIView alloc] initWithFrame:cell.bounds]; 
    bgView.backgroundColor = [UIColor clearColor]; 
    cell.backgroundView = bgView; 
    [bgView release]; 

То, что я пытаюсь сделать, это прямоугольник фона вместо округленный прямоугольник ищет сгруппированную таблицу, и потому, что в моей cellForRowAtIndexPath я создаю clearColor backgroundView, чтобы избавиться от закругленного прямоугольного вида, у меня больше нет разделителя. Добавляю ли я еще одну одиночную пиксельную строку UIView, которая находится в нижней части этого bgView, чтобы вернуть мой разделитель? Или есть лучший способ? Благодарю.

+0

лучший способ это подкласс UITableViewCell и сделать свои собственные границы. Я сделал это, и я приведу пример позже (сейчас я на мобильном устройстве). – Simon

+0

Я также сделал подкласс UITableViewCell. Но когда я бросил его в сгруппированный tableView, он дал мне закругленные углы. Вот почему я добавил bgView в ячейку. Если вы имеете в виду добавить UIView 1px в нижней части моего подкласса UITableViewCell, это имеет смысл. – Crystal

ответ

1

Здесь вы идете, это мой drawRect:, это удалит округленные ячейки. Это также используется в сгруппированном контроллере табличных представлений, как вы видите.

Вот пример изображения:

sample image

- (void) drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext();

// A left and right margin 
float margin = 10.0f; 

// Copy the rect and modify it's values to match the margin 
CGRect _rect = rect; 
_rect.size.width = _rect.size.width - (margin * 2); 
_rect.origin.x = margin; 

// Fill with a background color, in this case, white. 
[[UIColor whiteColor] set]; 
CGContextFillRect(context, _rect); 

// Set a line color 
[[UIColor grayColor] set]; 

// Shift the move point to match our margin 
CGContextMoveToPoint(context, margin, _rect.size.height); 

// Draw the line with the same width as the cell PLUS the margin (because we shifted it). 
CGContextAddLineToPoint(context, _rect.size.width + margin, _rect.size.height); 

// Finish 
CGContextStrokePath(context); 

}