Size: a a a

iOS Developers — русскоговорящее сообщество

2020 November 15

S

Spirit💎 in iOS Developers — русскоговорящее сообщество
меняй креативы
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Ребят, всем привет)

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

func reloadSavingCurrentContentOffset(newItemsCount: Int) {
       
let oldContentOffset = self.contentOffset.y
       
       reloadData()
       layoutIfNeeded()
       
       
let rowsIndexPaths = (0..<newItemsCount).map { IndexPath(row: $0, section: 0) }
       
let rowsHeights = rowsIndexPaths.map(rectForRow).map(\.height).reduce(0, +)
       
       setContentOffset(CGPoint(x: 0, y: oldContentOffset + rowsHeights), animated:
false)
}


это метод из extension
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
Vladimir Kliuiko
Ребят, всем привет)

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

func reloadSavingCurrentContentOffset(newItemsCount: Int) {
       
let oldContentOffset = self.contentOffset.y
       
       reloadData()
       layoutIfNeeded()
       
       
let rowsIndexPaths = (0..<newItemsCount).map { IndexPath(row: $0, section: 0) }
       
let rowsHeights = rowsIndexPaths.map(rectForRow).map(\.height).reduce(0, +)
       
       setContentOffset(CGPoint(x: 0, y: oldContentOffset + rowsHeights), animated:
false)
}


это метод из extension
ну и в чем проблема? если ты там допишешь скажем dispatch_after чтобы через секунду вывести contentOffset таблицы, он что будет не таким как перед этой функцией?
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Denis Kim
ну и в чем проблема? если ты там допишешь скажем dispatch_after чтобы через секунду вывести contentOffset таблицы, он что будет не таким как перед этой функцией?
ну так он и останется таким же
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
ну то есть он ведет себя как ты и ожидаешь? так в чем проблема?
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Denis Kim
ну то есть он ведет себя как ты и ожидаешь? так в чем проблема?
нет,  приходит новый контент, таблица обновляется. Старый контент должен остаться на той же позииции для юзера. TableView по дефолту оффсет не меняет.
источник

C

Chpek4ch in iOS Developers — русскоговорящее сообщество
скинь видос поведения
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Сейчас не могу
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Chpek4ch
скинь видос поведения
Слов недостаточно?)
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
ты новый контент добавляешь над старыми данными правильно? то есть ячейки как бы смещаются вниз а новые добавляются сверху?
источник

VK

Vladimir Kliuiko in iOS Developers — русскоговорящее сообщество
Denis Kim
ты новый контент добавляешь над старыми данными правильно? то есть ячейки как бы смещаются вниз а новые добавляются сверху?
верно
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
ну тогда я тебе рекомендую узнать номер ячейки сверху экрана (visiblecells.first) а потом сделать scrollToCellvisible с параметром top.
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
дело в том, что ячейки которые сверху добавились не видны на таблице (или допустим видны не все) поэтому они не загружаются, для них не делается просчет высоты и поэтому в итоге размер получается неверный который ты прибавляешь к offset
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
кроме того сама таблица тоже его не знает и ориентируется на какой-нибудь estimatedHeight
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
заставить все это посчитаться правильно пожалуй можно только при ручном расчете высоты на основе контента. но имхо мой способ проще
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
если тебе прям принципиально пиксель в пиксель можешь еще досчитать координаты верхней ячейки относительно верхней границы видимой области
источник

AY

Andrey Yastrebov in iOS Developers — русскоговорящее сообщество
источник

S

Say my name in iOS Developers — русскоговорящее сообщество
Boris Gelbukh
Я хочу понимать, как все это работает в общих чертах, чтобы контролировать работу маркетолога
а креативы статические или динамические?
источник
2020 November 16

BG

Boris Gelbukh in iOS Developers — русскоговорящее сообщество
Say my name
а креативы статические или динамические?
Статические
источник

S

Say my name in iOS Developers — русскоговорящее сообщество
короче новый выкидыш эппл под названием большой сюр лучше не ставить https://www.iphones.ru/iNotes/vladelcy-staryh-macbook-pro-zhaluyutsya-na-macos-big-sur-posle-ustanovki-chyornyy-ekran-11-15-2020
источник