IOS Swift UITableView - необъяснимые поля - как избавиться?

Итак, у меня есть UITableView с пользовательской ячейкой...

Вот ячейка:

введите здесь описание изображения

А вот xib с UITableView:

введите здесь описание изображения

Я не могу объяснить белые поля по обе стороны от синих ячеек???

Я старался:

override func viewDidLoad() {
    super.viewDidLoad()

    ...

    table.layoutMargins = UIEdgeInsetsZero
    table.separatorInset = UIEdgeInsetsZero
}

Я даже попробовал совет от iOS 8 разделитель UITableView вставка 0 не работает:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:Cell_Jobs = self.table.dequeueReusableCellWithIdentifier("Cell_Jobs") as Cell_Jobs

    cell.area.text = "Hello"


    // kill insets for iOS 8
    let nf = NSNumberFormatter()
    let version = nf.numberFromString(UIDevice.currentDevice().systemVersion)

    if(version?.floatValue >= 8){
        cell.preservesSuperviewLayoutMargins = false
        cell.layoutMargins = UIEdgeInsetsZero
    }
    // iOS 7 and later
    if(cell.respondsToSelector("setSeparatorInset:") ) {
        cell.separatorInset = UIEdgeInsetsZero
    }

    return cell
}

Но я все еще не могу убрать левое и правое поля...

Что я делаю не так?

XCode6.1.1. Сборка для iOS 8.

И вот неприятный вывод с нежелательными полями:

введите здесь описание изображения


Обновление для @Teemu Kurppa:

В viewDidLoad() я сделал:

self.view.backgroundColor = UIColor.yellowColor()
self.table.backgroundColor = UIColor.cyanColor()

В tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) я сделал:

cell.contentView.backgroundColor = UIColor.redColor()

Обновление 2:

Так что у меня это работает

  1. Я удалил родительский UIView
  2. Я создал новый UIView
  3. Я повторно добавил UITableView и UIActivityIndicatorView

Я скопировал и вставил (Apple+C) из xib Objective-C (который был написан более года назад) в новый xib Swift - я подозреваю, что были какие-то забавные настройки, которые вызывали эти необъяснимые поля.

Спасибо за помощь, ребята,

введите здесь описание изображения


person Eamorr    schedule 28.02.2015    source источник
comment
Убедитесь, что вы добавили код поля макета в методе «Отобразить ячейку». ios 8 вставка разделителя uitableview 0 не работает"> stackoverflow.com/questions/25770119/   -  person Renish Dadhaniya    schedule 28.02.2015
comment
Вы уже нажали Update Constraints в Storyboard/IB? В противном случае iOS будет использовать автоматически сгенерированные ограничения во время выполнения.   -  person lukas    schedule 28.02.2015
comment
Да, я пробовал это. Я даже вернулся к UITableViewCell по умолчанию, и я все еще вижу желтые поля... Теперь полностью застрял... ;(   -  person Eamorr    schedule 28.02.2015
comment
См. обновленный вопрос (обновление 2)   -  person Eamorr    schedule 28.02.2015


Ответы (2)


Для ячеек попробуйте следующее:

override func tableView(tableView: UITableView, 
             willDisplayCell cell: UITableViewCell,
      forRowAtIndexPath indexPath: NSIndexPath)
{
    cell.separatorInset = UIEdgeInsetsZero
    cell.preservesSuperviewLayoutMargins = false
    cell.layoutMargins = UIEdgeInsetsZero
}

Но на основе отредактированной информации кажется, что у вас есть запас в представлении контейнера табличного представления. Либо это происходит из-за ваших ограничений между представлением таблицы и представлением (проверьте их по одному), либо у вас есть поля макета в представлении, и в этом случае попробуйте;

 override func viewDidLoad() {
     // ... 
     self.view.layoutMargins = UIEdgeInsetsZero
 }
person Teemu Kurppa    schedule 28.02.2015
comment
Спасибо. Хотя это не работает - у меня все так же - белые поля с обеих сторон... - person Eamorr; 28.02.2015
comment
Из изображений кажется, что между tableView и его родительским представлением есть запас, но я не уверен. Для отладки в viewDidLoad установите self.view.backgroundColor = UIColor.yellowColor() и self.tableView.backgroundColor = UIColor.cyanColor(), а в коде создания ячейки установите cell.contentView.backgroundColor = UIColor.redColor(). - person Teemu Kurppa; 28.02.2015
comment
Привет Teemu, я только что обновил. Спасибо за предложение. Как мне получить ширину таблицы, соответствующую родительскому представлению? - person Eamorr; 28.02.2015
comment
Спасибо за предложение. К сожалению, когда я добавляю self.view.layoutMargins = UIEdgeInsetsZero, изменений нет — я все еще вижу желтые поля с обеих сторон. - person Eamorr; 28.02.2015
comment
@Eamorr, можете ли вы указать полную ширину вашего табличного представления? например tableview= self.view.bound.size.width. - person Renish Dadhaniya; 28.02.2015
comment
@RenishDadhaniya Спасибо за помощь. Пожалуйста, смотрите обновление 2 в исходном вопросе... - person Eamorr; 28.02.2015
comment
@Eamorr, можете ли вы предоставить демо-источник? - person Renish Dadhaniya; 28.02.2015

У меня была такая же проблема, и следующая строка работала для меня.

// (Using Swift 3.0)
cell.contentView.layoutMargins = UIEdgeInsets.zero

Важно знать, что представление содержимого внутри ячейки — это то, что имеет поле, а не ячейка, у которой оно есть.

person Mauro    schedule 01.11.2016