2016-04-06 3 views
1

Есть много сообщений, в которых задается вопрос о том, как сделать таблицы с высоты ячейки динамическими, и я понимаю, что могу сделать это через HeightForRowAtIndexPath.ios swift - динамическая высота ячейки таблицы в зависимости от устройства

Мои вопросы - это хорошая практика или нет.

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

Является ли это хорошей практикой, должно ли это быть вообще, или есть лучший способ? `

ответ

2

Вы можете установить высоту для вашего TableView, умноженного на подходящую фракцию. Скажем, вы создаете ячейку для iPhone 6 Plus с размерами 1242 × 2208 пикселей (414 × 736 точек). Теперь вы можете логически вывести heightRatio WRT текущее бега устройства, как

let heightRatio = UIScreen.mainScreen().bounds.height/736 

Так heightForRowAtIndexPath вы можете вернуть высоту как

return yourInterfaceBuilderCellHeight * heightRatio 
+0

Благодарим вас за все ваши ответы. Спасибо, Мэтьюз – Walking

0

Нельзя допускать, чтобы жесткий код вашего кода для высоты ячейки таблицы.

вы должны применять высоту с совершенными расчетами высоты Tableview клетки

, если жесткий код код может быть проблематичным в будущем, так что лучше иметь практику с динамическим размером каждой ячейки

0

Если данные остается статическим или не изменено динамически, тогда жесткий код для heightForRowAtIndexPath (дающий статическую высоту) в порядке, но если данные меняются, это не очень хорошая практика для выполнения жесткого кода. Вам нужно рассчитать высоту каждой строки, чтобы данные могли в нее вписаться.

0

Если данные динамически меняется, и вам необходимо установить высоту TableView клеток зависит на этой высоте данных тогда Apple дает решение для этого.

Просто установите оба свойства tableview, как показано ниже.

_tableViewOne.estimatedRowHeight = 50; //minimum row height 
_tableViewOne.rowHeight = UITableViewAutomaticDimension; 

так что это займет грести высоту по на его содержание.

Не используйте метод heightForRowAtIndexPath Tableview в противном случае выше код не будет работать (он будет переопределить эти свойства).

Вам не нужно ничего делать для роста. Система справится с этим.

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