Подтвердить что ты не робот

Последняя ячейка iOS7 в секции UITableView заставляет разделитель полной ширины

Ниже UITableView имеет пользовательский UITableViewCells, и я могу настроить разделители в порядке, используя эту строку в пользовательском UITableViewCell:

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

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

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

UITableView with wide section separator in iOS7

4b9b3361

Ответ 1

После некоторых экспериментов я нашел единственное реальное решение - установить 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 не предоставляет всех функций UITableViewStyleGrouped, но дает мне раздел без разделителя полной ширины.

enter image description here

Ответ 2

После некоторых экспериментов я нашел решение! 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;

Ответ 3

Используйте свойство separatorInset непосредственно в tableView, а не в отдельных ячейках. В tableView separatorInset задается вставка по умолчанию, которая может быть переопределена ячейками, а также вставка для "дополнительных" ячеек внизу.

Ответ 4

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

self.tableFooterView = [[UIView alloc] init]