Комментарии 25
Hourly, кстати, прикольно выглядит, на Android не планируете выпустить?
Пару моментов хочу прояснить по реализации.
Имхо для плавной анимации раскрытия ячейки можно просто поменять соответствующий state в модели на «раскрыть» и вызвать метод tableView.reloadRowsAtIndexPathWithAnimation(название метода по памяти пишу). Вроде должно прокатить и намного меньше кода.
И если для таблицы важна скорость работы, то лучше значения модели в ячейку сетить в willDisplayCell, а не cellForRow.
Еще интересно было ли ограничение на использование сторонних библиотек?
А вы показ видео не реализовывали? Интересно как разномастные источники (ютуб, рутуб, вк) лучше всего обрабатывать.
Поздравляю вас!Спасибо.
Имхо для плавной анимации раскрытия ячейки можно просто поменять соответствующий state в модели на «раскрыть» и вызвать метод tableView.reloadRowsAtIndexPathWithAnimation(название метода по памяти пишу). Вроде должно прокатить и намного меньше кода.Не пользовался, но выглядит подходящим. Попробую, спасибо за совет.
И если для таблицы важна скорость работы, то лучше значения модели в ячейку сетить в willDisplayCell, а не cellForRow.И да, и нет. Можете попробовать – в моём случае прироста производительности заметного не наступит. Я пытался сконцентрировать 20% усилий на решение 80% проблем производительности. Но вы верно заметили, что правильнее сеттить данные в willDisplayCell.
Еще интересно было ли ограничение на использование сторонних библиотек?Нельзя было использовать сторонние библиотеки кроме VKSDK исключительно для авторизации.
А вы показ видео не реализовывали? Интересно как разномастные источники (ютуб, рутуб, вк) лучше всего обрабатывать.Неа, по заданию нужно было только текст, раскрытие текста, изображение и карусельки изображений.
И если для таблицы важна скорость работы, то лучше значения модели в ячейку сетить в willDisplayCell, а не cellForRow.
Популярное заблуждение
При установке estimatedRowHeight в ноль вообще отключаются estimated height и всё считается через heightForRow.
Из документации
Set the value to 0 to disable estimated heights.
По поводу UIRefreshControl. Пофиксить его некоторые баги нельзя, особенно если хочется юзать спокойно с любыми наследниками UIScrollView без особенных UIViewController. Я навидался кривого поведения с ним (даже эпловых аппов), немного посмотрел как он устроен внутри через hopper и выкинул его нафиг. Так что совет всегда юзать его не самый лучший. Я бы сказал так, если пофиг на баги и хочется быстро поддержать рефреш — юзать, если хочется хорошо, то не стоит)
возможно неплохим бустом былобы кеширование ячеек с разным типом контента. чисто текст, чисто картинки и текст + картинки. layout даже не автоматически довольно прожорлив
Это просто добавить свои типы ячеек для карусельки и одиночной картинки, либо какой-то «кеш» отдельный UIView / CALayer?
я вижу 3 варианта (если не юзать всякое сторонее)
1 — сделать для каждого типа свою ячейку (чисто текст, текст с картинкой, картинка), и сразу зарегистрировать их в таблице
2 — сделать базовую ячейку которая подстраивается под контент(в принцыпе так как в твоем коде но большее унифицировано, чтоб не запутатся в куче переменных), как вариант — каждый тип контента на своей вьюхе, которая добавляется на ячейку если такой тип контента есть в посте. из таблицы в cellForRowAtIndexPath получать пытаться получить ячеqку под тип контента dequeueReusableCellWithIdentifier, и если такой нет — создать такую.
как результат, действий с addSubview/removeFromsuperview будет минимум, только при новом создании ячейки
ну и еще пул uiimageview для карусели картинок можно
3 — для самых изощренных — рендерить пост как картинку, и отображать чисто картинку) с каруселями нужно будет включать смекалку
Как написать отличную ленту новостей ВКонтакте за 20 часов