IOS Swift UITableView - необясними маржове - как да се отървете?

Така че имам UITableView с персонализирана клетка...

Ето клетката:

въведете описание на изображението тук

И ето xib с UITableView:

въведете описание на изображението тук

Не мога да обясня белите полета от двете страни на сините клетки???

Опитах:

override func viewDidLoad() {
    super.viewDidLoad()

    ...

    table.layoutMargins = UIEdgeInsetsZero
    table.separatorInset = UIEdgeInsetsZero
}

Дори опитах съвета от iOS 8 UITableView separator inset 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) от Objective-C xib (който беше написан преди повече от година) в нов Swift xib - подозирам, че имаше някои смешни настройки, които се задържаха, които причиняваха тези необясними полета.

Благодаря за помощта момчета,

въведете описание на изображението тук


person Eamorr    schedule 28.02.2015    source източник
comment
Уверете се, че сте добавили код на маржа на оформлението в метода Ще се покаже клетка.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