macOS какао TableView с переменной Row-Height и пользовательскими ячейками - PullRequest
0 голосов
/ 01 июля 2018

Положение Я хочу создать таблицу News-Article в приложении MacOS Cocoa. (см. изображение ниже) Каждая ячейка состоит из двух меток. Один для заголовка и один для основного контента.

Задача Теперь длина тел новостей и ширина всего TableView являются переменными. Я хочу иметь переменную высоту для каждой строки / ячейки в зависимости от размера меток в ней.

Что мы пробовали Мы попробовали следующее: У нас есть TableView

 -> TableColumn
  -> Custom View
   -> LabelHeader
   -> LabelBody

Для свойства RowSizeStyle в TableView установлено значение «Автоматически»

Ячейки заполнены пользовательским классом. В основном мы пытались реализовать это решение StackOverflow: Ссылка на решение ->, которое у нас не работало.

(и многие другие решения, которые мы не смогли запустить)

Вопрос * * 1023 Кто-нибудь может предоставить рабочий учебник или решение этой проблемы? Или хотя бы перспективный подход?

PS Я использую XCode 9.4.1 и Swift 4 на macOS 10.13.5

Любая помощь с благодарностью, спасибо!

img

1 Ответ

0 голосов
/ 03 июля 2018

В современном приложении какао вы используете NSLayoutConstraint для реализации динамической высоты ячейки табличного представления. Сложнее было бы получить высоту текста, которую можно установить высотой ограничения. Это можно сделать, используя NSTextView вместо NSTextField и запросив у менеджера макета текущую высоту.

NSRect usedRect = [[textView layoutManager] usedRectForTextContainer:[self textContainer]];
float newHeight = usedRect.size.height;

Я использовал это в приложении c целью несколько лет назад, поэтому, если у вас есть дополнительные вопросы, пожалуйста, дайте мне знать.

...