2015-05-06 3 views
4

Есть ли способ настроить ширину таблицы ширины по ширине самого большого текста, который должен быть установлен на ярлыке cellTitle?Как изменить размер UITableView в соответствии с его содержимым?

IOS 8, СВИФТ

+0

Что вы пытаетесь достичь? вы хотите поместить некоторые другие элементы управления прямо в таблицу? или почему он не должен занимать весь экран? –

ответ

1
  1. Установить width ограничение автоматической компоновки в представлении таблицы.
  2. Установите outlet с ограничениями на ваш код (ctrl + drag, точно так же, как вид).
  3. Когда вы размер этикетки (если метка также имеет функцию автоматической компоновки, то вы будете иметь его viewDidLayoutSubviews) установите ширину таблицы следующим образом:

    - (void)viewDidLayoutSubviews { 
        self.myTableWidthConstraint.constant = self.myLabel.frame.size.width; 
        [self.myTableView updateConstraints]; 
        [self.myTableView layoutIfNeeded]; 
    } 
    
+0

Спасибо, что работает !!! – Nik

+0

Рад, что это сработало, если ответ решил вашу проблему, пожалуйста, обратите внимание на отметку зеленой проверки для ответа, спасибо (: –

0

Вы можете достичь его, написав 2 строки в viewDidLoad:

//what ever you want the estimated row height 
    self.tableView.estimatedRowHeight = 280 
    self.tableView.rowHeight = UITableViewAutomaticDimension 

Примечание: его применять только для IOS 8

+0

это не имеет никакого отношения к ширине ... –

+0

@AndreSlotta Ширина не важна, это может достичь, чтобы соответствовать содержанию на этикетке. – AaoIi

+0

Да, я знаю об этой возможности. но для меня вопрос звучит по-другому: * способ настройки ширины таблицы ширины по ширине самого большого текста * ... –

-1

Вы должны быть в состоянии сделать это в инспекторе размеров.

1
public override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    // Set the popover tableview width to be max compressed size (assumes all cells visible) 
    let maxWidth = tableView.visibleCells.reduce(0.0) { (currentMax, cell) -> CGFloat in 
     return max(currentMax, cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).width) 
    } 

    var contentSize = tableView.contentSize 
    contentSize.width = maxWidth 
    tableView.contentSize = contentSize 
    tableView.bounds.size = contentSize 
}