2016-08-15 3 views
1

Я знаю, как создать пользовательскую ячейку для калибровки. Но по какой-то причине я сталкиваюсь с проблемами при попытке сделать по умолчанию одну многострочную линию.Как сделать собственный размер UITableViewCell?

То, что я сейчас хочу, это ячейка, которая имеет только одну метку. Таким образом, стандартный по умолчанию со встроенным стилем «Basic», по-видимому, является лучшим решением для чего-то простого. Однако он отображает только 2 строки текста.

Моя текущая настройка: статические UITableView и UITableViewController, содержащие выходы к некоторым ячейкам, которые необходимо настроить.

Что я пробовал:

  • заданное количество строк высоты строки 0
  • Столовый набор зрения на UITableViewAutomaticDimension
  • переопределение heightForRowAtIndexPath так, что она всегда возвращает UITableViewAutomaticDimension
  • вызов sizeToFit, setNeedsLayout, layoutIfNeeded на ячейку и/или просмотр содержимого и/или текстовую метку
  • set cust высота ячейки ом 0 в раскадровку
  • увеличение вертикальных и горизонтальных приоритетов содержание обниматься на этикетке

EDIT:

Я предполагаю, что я был не совсем понятно, о чем именно проблема. Я не использую пользовательскую ячейку. Я пытаюсь уйти с основной.

cell

Это означает, что вы не можете добавить каких-либо ограничений на его этикетке. Конечно, вы можете программно, но поскольку все управляется внутри встроенных стилей Apple, это может привести к конфликту.

Дополнительная информация:

На данный момент (как я уже упоминал выше) у меня есть UITableViewController с выходами к конкретным клеткам: @IBOutlet weak var descriptionCell: UITableViewCell!

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

действительно ли это возможно? Поскольку я уже потратил слишком много времени, пытаясь избежать создания пользовательской ячейки, я, наконец, сделаю это. В любом случае любое решение приветствуется.

+0

Переполнение стека не подходит для учебников. Я предлагаю вам отредактировать свой вопрос, чтобы показать свой код контроллера таблицы, изображение вашей ячейки с ограничениями и точно указать, в чем проблема и что не работает. По мере вашего вопроса ваш вопрос слишком широк. –

+0

Следуйте инструкциям: - http://www.programmingcrew.in/2015/09/uitable-view-cell-dynamic-height-ios7.html – pkc456

+0

@RoboticCat в порядке, я отредактировал исходное сообщение, но кода еще нет. участвует. Я думал, что могу уйти с базовой ячейкой, но, оказывается, я не могу. – David

ответ

0

Не нужно делать следующие два.

  • вызов sizeToFit, setNeedsLayout, layoutIfNeeded на клетку и/или представления контента и/или текстовой метки
  • набор пользовательских высоты ячейки 0 в раскадровке

И вы должны проверить ограничения вы лейбла. Например, он должен иметь фиксированную ширину во время выполнения и имеет ограничения с верхней и нижней ячейкой. Таким образом, клетка будет расти сама.

+0

Это, безусловно, работает, если вы не используете ячейку со встроенным стилем («Basic» в моем случае). Я редактировал свое оригинальное сообщение с дополнительными деталями. – David

0

Попробуйте этот подход:

  1. Установить количество строк в высоту строки 0
  2. Set Table View для UITableViewAutomaticDimension
  3. Override heightForRowAtIndexPath так, что она всегда возвращает UITableViewAutomaticDimension
  4. NsLayConstraints для этикетки:

    top = cell.top 
    bottom = cell.bottom 
    leading = cell.leading.padding 
    trailing = cell.leading.padding (Padding is optional) 
    
+0

Но на самом деле нет хорошего способа добавления ограничений на метку при использовании встроенного стиля ячейки («Basic» в моем случае). Я редактировал свое оригинальное сообщение с дополнительными деталями. – David

+1

без UITableViewAutomaticDimension и оцененного свойства высоты вы не можете сделать это. по моим знаниям, нет никакого способа сделать это. вы не можете передавать только по ограничениям. –

0

Это работает для меня. Все, что вам нужно сделать в вашем коде

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.estimatedRowHeight = 44.0 // or whatever height is closest to what your cells will be 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

Все, что вы перечислены после «высоты строки набора представления таблицы к UITableViewAutomaticDimension» не является необходимым. Просто установите количество строк на ярлыке вашей ячейки на 0, как и вы, и включите код выше.

Смежные вопросы