Разделитель UITableview не скрывается для iOS9

я реализовал UITableView с кодированием. Я также установил UITableViewCellSeparatorStyleNone. Он скрывается для iOS8 и ниже, но не скрывается с бета-версией iOS9.

8 ответов


пожалуйста, установите стиль разделителя в None в методе layoutSubviews.

при использовании макета на основе ограничений базовая реализация применяет макет на основе ограничений и установка separatorStyle для UITableViewCellSeparatorStyleNone в этом методе скроет разделитель для вас.


из моих исследований, это не iOS9 виноват, но Xcode 7.0 beta 4.

Если я создаю приложение с помощью Xcode 7.0 beta 4, то разделители ячеек отображаются, даже если в Interface Builder установлено значение None. Если я создаю тот же код с Xcode 6.4 или 7.0 beta 3, разделители не отображаются.

вы можете явно вызвать это в своем ViewController в качестве обходного пути:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

(Я думаю ibtool может быть виноват)


Я также сталкиваются с той же проблемой. Мой обходной путь был просто установить

tableView.separatorColor = UIColor.clearColor().


решение от форум разработчиков apple это сработало для меня:

вы можете удалить разделители с помощью set UITableViewCellSeparatorNone перед каждым методом reloadData (ios 9.1). Я не знаю почему, но UITableView сбрасывает separatorStyle и separatorColor каждый tyme после вызова метода reloadData.


установка стиля разделителя в .None не работал для меня, поэтому я использовал вставки edge в качестве обходного пути

self.tableView.separatorInset.left = UIScreen.mainScreen().bounds.width

У меня была та же проблема, отлично работала на iOS 8, но показывала разделитель в iOS9. Я уже устанавливал стиль разделителя в none. Следующее решило это для меня

if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        cell.preservesSuperviewLayoutMargins = NO;
    }
    cell.separatorInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, cell.bounds.size.width);
    if([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        cell.layoutMargins = UIEdgeInsetsZero;
    }

это в основном раздавить разделитель с помощью вставки.


эта проблема очень раздражает. И вот мое решение:

override func didMoveToSuperview() {
    if self.superview != nil {
        self.tableView.separatorStyle = .None
    }
}

установите separatorStyle снова, когда представление добавляется в его супервизор.


myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;

для Swift

myTableView.separatorStyle = UITableViewCellSeparatorStyle.None

на cellForRowAtIndexPath метод скроет белые линии в iOS 9 и более поздних версиях.