Как стать автором
Обновить
4
0
Anton Serov @superanreal

iOS Developer

Отправить сообщение
В самом начале мы использовали для DI фреймворк Typhoon, но в ходе оптимизации времени запуска приложения выяснили, что разрешение зависимостей занимает непозволительно долгое время на старте приложения (единицы секунд на слабых устройствах). Поэтому мы перешли на ручной DI через property-based injection.

Скажите, а какую версию Typhoon вы использовали, до того, как отказались от него? Вроде начиная с четвертой версии разработчики оптимизировали время разрешения зависимостей.
4-5 новостей — это 4-5 ячеек с различной разметкой и reuseIdentifier.
20 вью — это в одной ячейке заголовка новости? Если так — то очевидны проблемы с интерфейсом.
Я сам сейчас делаю приложение с выводом множества ячеек с 3-5 label различной высоты. Использую Masonry и авторасчет высот. За раз показывается около 40-60 ячеек. Не тормозит даже на iPhone 5, на 4s — слегка.
На счет скорости вполне возможно, но хотелось бы увидеть приблизительный лэйаут на котором может сильно тормозить расчет высот.
Но как быть с ориентацией, и случаями, когда от размера зависит положение и размер элементов? Констреинты очень сильно в таких случаях помогают.
Что значит вручную? Без использования constraints?
Можно кэшировать уже рассчитанные высоты и в -estimatedHeightForRowAtIndexPath их возвращать.
При правильной настройки constraints и выставлении
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = EstimatedRowHeight;

TableView сам рассчитает размер ячейки, достаточный для ее отображения.
Статья по-большей части даже вредная. Как минимум, надо указать, что так никто не делает с тех пока, как появился autolayout.
В iOS 6-7 задают constraints и высчитывают высоту contentView методом -systemLayoutSizeFittingSize.
В iOS 7 появился доп. метод делегата таблицы -estimatedHeightForRowAtIndexPath, для приблизительного указания высоты.
Ну и счастливчики, разрабатывающие под iOS8+ могу использовать динамический подсчет величины просто указав

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = EstimatedRowHeight;


Хотя это не избавляет от проблем с многострочными UILabel. В довесок Apple не исправила баг с скачущими высотами ячеек при прокрутке вверх (тык).

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность