2013-10-01 5 views
30

UITableView ниже, имеет пользовательский UITableViewCells и я могу настроить сепараторы штрафа, используя эту строку в обычае UITableViewCell:iOS7 последняя ячейка в разделе сил UITableView полной ширина сепаратор

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

Однако клетка в нижней секции имеет разделитель по умолчанию, который переопределяет настраиваемый UIEdgeInsets, который я установил.

Я хотел бы все разделители должны быть одинаковой ширины, есть ли способ сделать это без перерисовки разделителей вручную?

UITableView with wide section separator in iOS7

ответ

12

После некоторых экспериментов я нашел единственное реальное решение, чтобы установить UITableViewStyle в UITableViewStylePlain и набор пустых колонтитулы с помощью:

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

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

Это не будет удовлетворительным решением для некоторых, потому что UITableViewStylePlain не обеспечивает все функции , но он дает мне раздел без разделителя полной ширины.

enter image description here

+1

Это приятное решение, но я предпочитаю просто скрывать разделители по умолчанию и добавлять 1px-представление к нижней части моих ячеек таблицы. – Sulthan

+6

У меня такая же ситуация, и она работает, пока я не коснусь последней ячейки. После нажатия последний разделитель снова заполняет всю ширину и меняет ее в коде '[self.tableView setSeparatorInset: UIEdgeInsetsMake (0, 15, 0, 0)]' не помогло. Любое решение? – lvp

+1

Кажется, 'viewForFooterInSection' на самом деле не нужно. Возвращение .01f как 'heightForFooterInSection', похоже, делает трюк. Больше нет болтающегося разделителя! – Nuthatch

2

Используйте separatorInset свойство на самом Tableview, а не на отдельных клетках. В таблице separatorInset таблицыView устанавливается вставка по умолчанию, которая может быть переопределена ячейками, а также вставка для «лишних» ячеек внизу.

+6

К сожалению, в iOS7 изменяя Tableview в 'separatorInset' не влияет на разделители в начале и в конце каждого раздела. Кажется, они постоянно заполняют ширину таблицыView. Изменение 'separatorInset' влияет только на средние разделители. –

2

Дайте таблицу пустой колонтитула:

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

Я не вижу, как люди не используют это. Это работало безупречно, когда другие методы дали мне столько проблем –

4

После некоторых экспериментов я нашел решение! tableFooterView может быть покрыт разделитель, как это:

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

Это сработало для меня! Я также вернул 'v' в viewForFooterInSection. Благодаря! – Jacob

Смежные вопросы